Показать сообщение отдельно
Старый 20.08.2008, 15:06   #3
Smarik
AnyKey`щик
 
Аватар для Smarik
 
Регистрация: 15.08.2008
Адрес: Кемерово
Сообщений: 17
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Не вижу ошибку

Я бы не назвал ето отрезком, процедура в полную ее велечину, некоторые переменные просто описаны как глобальные, сейчас опишу все действия, возможно станет понятнее.
     procedure NewGame;  
var
key:integer; 
exit,clicked:command;                         
begin
FillRect(0,0,getWidth,GetHeight);
lev.level:=1;
{загружаем какртинку в зависимости от уровня}
lev.img:=LoadImage('levimg'+lev.level+'.PNG'); 
{находим координаты центра екрана}
lev.x:=(GetWidth/2)-(GetImageWidth(lev.img)/2);
lev.y:=(GetHeight/2)-(GetImageHeight(lev.img)/2);
{загружаем персонажа}
fed.img:=LoadImage('/4.PNG');
{находим координаты центра екрана}
fed.x:=(GetWidth/2)-(GetImageWidth(fed.img)/2);
fed.y:=(GetHeight/2)-(GetImageHeight(fed.img)/2);
{говорим что персонаж смотрит направо}
fed.st:='right'; 
{софт клавиша}
exit := CreateCommand('Выход', CM_EXIT, 1); 
AddCommand(exit); 
repeat
FillRect(0,0,getWidth,GetHeight);
{проверяем содержание переменной Score и устанавливаем уровень}
if score<99 then lev.level:=1; 
if (score>100) and (score<199) then lev.level:=2; 
if (score>200) and (score<399) then lev.level:=3;
if (score>400) and (score<699) then lev.level:=4;
if (score>700) and (score<=1000) then lev.level:=5;
{устанавливаем скорость персонажа в зависимости от уровня}
fed.speed:=lev.level;
{рендом для создания анимации}
randomize;
{если персонаж смотрит налеов загружаем либо 0.PNG или 1.PNG или 2.PNG, получается анимация}
if fed.st='left' then 
begin 
fed.rand:=random(3);
fed.img:=LoadImage('/'+fed.rand+'.PNG');
end;
{аналогично в другую сторону}
if fed.st='right' then 
begin 
fed.rand:=random(6)-3;
fed.img:=LoadImage('/'+fed.rand+'.PNG');
end;
{рисуем задний план и персонажа}
DrawImage(lev.img,lev.x,lev.y);
DrawImage(fed.img,fed.x,fed.y);
{управление}
key:=GetKeyPressed;
if key=KE_KEY2 then
fed.y:=fed.y-fed.speed;
if key=KE_KEY8 then
fed.y:=fed.y+fed.speed;
if key=KE_KEY6 then 
begin
fed.st:='right';
fed.x:=fed.x+fed.speed;
end;
if key=KE_KEY4 then 
begin
fed.st:='left';
fed.x:=fed.x-fed.speed;
end;
repaint; 
delay(50);
clicked := getClickedCommand; 
{ждем нажатия клавиши выход}
until clicked = exit; 
if clicked=exit then halt;
{удаляем софт клавишу}
removeCommand(exit);
end;
(Offline)
 
Ответить с цитированием