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

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


Новичок
*

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

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


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

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


Новичок
*

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

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


Переписываю мышь в ООП =) Написал с использованием BMP, но не пойму, где ошибка( Мужики, помогите! Почему не работает?
Uses Graph,Crt,Bmp;
Const m=18;
n=18;
Mouses=10;
Type
MouseData=Record
x,y: Integer;
End;
Data=Array[1..m,1..n] Of Integer;
TMouse=Object
Public
Constructor Init(MousePath,KillPath: String; xC,yC: Integer);
Destructor Done;
Function Work: Boolean;
Function xW: Integer;
Function yW: Integer;
Procedure DrawMouse;
Private
x,y: Integer;
Mouse,Kill: String;
Working: Boolean;
End;
Constructor TMouse.Init(MousePath,KillPath: String; xC,yC: Integer);
Begin
Mouse:=MousePath;
Kill:=KillPath;
x:=xC;
y:=yC;
Working:=True;
End;
Destructor TMouse.Done;
Begin
BMPDisplay(Kill,x,y,False);
Delay(10000);
BMPDisplay(Kill,x,y,True);
Working:=False;
End;
Function TMouse.Work: Boolean;
Begin
Work:=Working;
End;
Function TMouse.xW: Integer;
Begin
xW:=x;
End;
Function TMouse.yW: Integer;
Begin
yW:=y;
End;
Procedure TMouse.DrawMouse;
Begin
BMPDisplay(Mouse,x,y,False);
End;
Var Mas: Array[1..Mouses] Of ^TMouse;
i,GD,GM,xT,yT: Integer;
Function RandCoord(Coord: Char): Integer;
Var z,i: Integer;
Flag: Boolean;
Begin
If Coord='x' Then {m}
Begin
Repeat
Flag:=True;
z:=Random(640);
For i:=1 To Mouses Do
If (ABS(z-Mas[i]^.xW))<20 Then
Begin
Flag:=False;
Break
End;
Until (z<622) AND Flag AND ((z<280) Or (z>360));
End;
If Coord='y' Then {n}
Begin
Repeat
Flag:=True;
z:=Random(480);
For i:=1 To Mouses Do
If (ABS(z-Mas[i]^.yW))<20 Then
Begin
Flag:=False;
Break
End;
Until (z<462) AND Flag AND ((z<200) Or (z>280));
End;
RandCoord:=z;
End;
Begin
GD:=Detect;
InitGraph(GD,GM,'');
Randomize;
Repeat
Repeat i:=Random(Mouses) Until i>0;
If Mas[i]^.Work Then
Begin
Mas[i]^.Done
End
Else
Begin
xT:=RandCoord('x');
yT:=RandCoord('y');
Mas[i]^.Init('Mouse.bmp','Kill.bmp',xT,yT);
Mas[i]^.DrawMouse;
End;
Delay(65535);
Until KeyPressed;
End.

Модуль BMP Прикрепленный файл  BMP.PAS ( 4.8 килобайт ) Кол-во скачиваний: 497

Мышки Прикрепленный файл  Mouse.bmp ( 346 байт ) Кол-во скачиваний: 882
Прикрепленный файл  kill.bmp ( 346 байт ) Кол-во скачиваний: 908
 Оффлайн  Профиль  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

 





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