IPB
ЛогинПароль:

> Оптимизация алгоритма, Помогите устранить тормоза в игре!
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской

Репутация: -  0  +


Привет еще раз. Пишу игру Охотник на мышек=) Столкнулся с проблемой: как выполнять две процедуры одновременно? Ответ: никак =) Есть процедура, которая генерит вывод мышей на экран. Еще есть процедура, которая рисует охотника в центре экрана, которым нужно управлять. Но как управлять охотником, если уже выполняется процедура вывода мышей на экран? ReadKey не помогает, он останавливает программу в ожидании нажатия клавиши.
Второй вопрос, но тоже по теме. Чтобы убить мышку, нужно направить ружьё охотника на неё и нажать клавишу "Пробел". Как это можно реализовать в моём коде?

" (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской

Репутация: -  0  +


Мужики, зацените мой первый опыт в ООП =) Переписал в ООП охотника из игры. Нормально?
Program Hunt;
Uses Graph,Crt;
Const
Left = #75;
Right = #77;
Type
Hunter=Object
Public
Constructor Init(xC,yC,WeaponLen,Head,Hat: Integer; Speed: Real);
Destructor Done;
Function CountX(D: Real): Integer;
Function CountY(D: Real): Integer;
Procedure Direction(c: Char);
Procedure Draw;
Private
x0,y0,x1,y1,r,HIn,HOut: Integer;
Spd,t: Real;
End;
Constructor Hunter.Init(xC,yC,WeaponLen,Head,Hat: Integer; Speed: Real);
Begin
x0:=xC;
y0:=yC;
r:=WeaponLen;
HIn:=Head;
HOut:=Hat;
Spd:=Speed;
x1:=r+x0;
y1:=y0;
t:=0;
End;
Destructor Hunter.Done;
Begin
WriteLn('Done');
End;
Function Hunter.CountX(D: Real): Integer;
Begin
CountX:=Round(r*Cos(D))+x0;
End;
Function Hunter.CountY(D: Real): Integer;
Begin
CountY:=Round(r*Sin(D))+y0;
End;
Procedure Hunter.Direction(c: Char);
Begin
Case c Of
Left: t:=t-Spd;
Right: t:=t+Spd;
End;
If (t>=2*Pi) Or (t<=-2*Pi) Then t:=0;
End;
Procedure Hunter.Draw;
Begin
SetColor(Black);
Line(x0,y0,x1,y1);
x1:=CountX(t);
y1:=CountY(t);
SetColor(Red);
Line(x0,y0,x1,y1);
SetColor(Blue);
SetFillStyle(1,Blue);
PieSlice(x0,y0,0,360,HIn);
SetColor(Red);
SetFillStyle(1,Red);
PieSlice(x0,y0,0,360,HOut);
End;
Var GD,GM: Integer;
H: Hunter;
k: Char;
Begin
GD:=Detect;
InitGraph(GD,GM,'');
H.Init(320,240,20,10,6,0.1);
Repeat
k:=ReadKey;
H.Direction(k);
H.Draw;
Until k=#27;
CloseGraph;
H.Done;
ReadLn
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
pashist   Оптимизация алгоритма   20.07.2006 0:27
klem4   Видимо не верно ты ридкей юзать пытаешься ... Дела…   20.07.2006 1:15
pashist   Это выход, но все равно скорости работы явно не хв…   21.07.2006 1:19
Бродяжник   Вот это PutPixel(xT,yT,0); ЗЛО. Злое злостное зло.…   21.07.2006 13:58
Гость   Пишу именно лабораторку..   21.07.2006 15:49
pashist   Всем доброе время суток. Переписал алгоритм, испол…   24.07.2006 4:48
Бродяжник   2) Так, наверное, и сделать - сравнить углы. Нужно…   24.07.2006 13:20
pashist   Mouse.dat-файл, содержащий матрицу 18х18=) Вот ген…   24.07.2006 13:32
Бродяжник   Ну так вот: в этом цикле For i:=1 To n Do Be…   24.07.2006 14:43
pashist   Поменяй в этом цикле For i:=1 To n Do …   24.07.2006 15:41
volvo   Правильно... у тебя индексы-то по-прежнему перепут…   24.07.2006 15:47
Бродяжник   Тем более, что матрица-то квадратная, 18х18, так ч…   24.07.2006 15:57
pashist   Спасибо! :) А как заюзать функу angle? Как пом…   24.07.2006 16:37
Бродяжник   Ну... Предположим, что режим 640 на 480. И начало …   24.07.2006 17:27
pashist   Опять косяк.. :( Я неправильно использую функу Ang…   24.07.2006 18:25
Бродяжник   Отвечу завтра. Единственное замечание - стоит ли с…   24.07.2006 20:02
pashist   Я так и хотел сделать, но сначала я хотел разобрат…   24.07.2006 20:22
Бродяжник   Простой корявый пример, иллюстрирущий идею.   25.07.2006 15:23
pashist   Круто! Бродяжник, спасибо! Вот, что пример…   25.07.2006 17:33
pashist   Мужики, зацените мой первый опыт в ООП =) Переписа…   25.07.2006 23:15
pashist   Переписываю мышь в ООП =) Написал с использованием…   31.07.2006 0:53
volvo   Переписываю мышь в ООП =) Написал с использованием…   31.07.2006 1:54
pashist   volvo, спасибо большое! Ты очень мне помог :)   31.07.2006 3:17


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 17:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name