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

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


Новичок
*

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

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


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

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


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

 



- Текстовая версия 21.06.2025 8:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"