Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 02.01.2006, 12:47   #31
Red Ninja(Михайлов Никита)
Оператор ЭВМ
 
Регистрация: 30.12.2005
Сообщений: 45
Написано одно полезное сообщение
Восклицание

Ну вот и отлично,а ты уже очаевался!

Можно замутитьть как у тебя с быстрой скоростью!
Нажо отрисовывать только те тайлы которые видны на мониторе,а ты рисовал всю карты сразу!
(Offline)
 
Ответить с цитированием
Старый 02.01.2006, 14:01   #32
Red Ninja(Михайлов Никита)
Оператор ЭВМ
 
Регистрация: 30.12.2005
Сообщений: 45
Написано одно полезное сообщение
Сообщение

Вот я написал тебе как тебе надо!
(Offline)
 
Ответить с цитированием
Старый 03.01.2006, 11:31   #33
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Вот пытался уменьшить кол-во вычислений... вроде меньше стало, а ФПС такойже остался... значит дело не в кол-ве вычислений...
program Tanks;
var 

 GameFF: array[1..30, 1..30] of integer;
 MO: array[0..10] of image;
 FieldW,FieldH:integer;
 ScreenW,ScreenH:integer;
 i,j,t,xc,yc,xc1,yc1: integer;
 SXPos,SYPos,XMax,YMax: integer; { Position Screen on Map }
 DXPos,DYPos: integer;
 MXPos,MYPos: integer;
 StageRes: resource; 
 Tank1: array [1..4] of image;
 
 UTT:integer; { Type of Tank for User }
 UXPos,UYpos: integer; { UserPosition on Area } 
 
  FPS_LastCount,FPS_Count,MS,MSL: integer;

begin

{ Setting Constants }

SXPos:=1;
SYPos:=1;

 	DXPos:=SXPos/16;
 	MXPos:=-(SXPos mod 16)-16;
 	DYPos:=SYPos/16;
 	MYPos:=-(SYPos mod 16)-16;

ScreenW:=GetWidth/16+1;
ScreenH:=GetHeight/16+2;

FieldW:=30;
FieldH:=30;

XMax:=FieldW*16-ScreenW*16;
YMax:=FieldH*16-ScreenH*16;

{ Loading Stage 1 }

{ Setting Stage Constants }

UXPos:=32;UYPos:=32;

{ Loading Images }

MO[1]:=loadimage('/Wall1.png');
MO[0]:=loadimage('/Floor1.png');

Tank1[1]:=loadimage('/tank1.png');
Tank1[2]:=loadimage('/tank2.png');
Tank1[3]:=loadimage('/tank3.png');
Tank1[4]:=loadimage('/tank4.png');

{ Loading Map }

StageRes:=OpenResource('/stage1.tt'); 

if ResourceAvailable(StageRes) then begin
 for i:=1 to 30 do for j:=1 to 30 do begin
 t:=readbyte(StageRes);
 if t=$3B then begin t:=readbyte(StageRes);t:=readbyte(StageRes);t:=readbyte(StageRes);end;
 GameFF[j,i]:=t-$30;
 end;
end;
CloseResource(StageRes);


{ Main Loop }
t:=1;
while true do//GetKeyClicked <> KE_STAR do 
begin 

 setcolor(0,0,0);fillrect(0,0,getwidth,getheight); { CLS }
 
 if GetKeyPressed = KE_KEY6 then 
 Begin
 	SXPos:=SXPos+t;
 	DXPos:=SXPos/16;
 	MXPos:=-(SXPos mod 16)-16;
 End;
 
 if GetKeyPressed = KE_KEY4 then
 	Begin
 	SXPos:=SXPos-t;
 	DXPos:=SXPos/16;
 	MXPos:=-(SXPos mod 16)-16;
 End;
 
 if GetKeyPressed = KE_KEY8 then
 	Begin
 	SYPos:=SYPos+t;
 	DYPos:=SYPos/16;
 	MYPos:=-(SYPos mod 16)-16;
 End;
 
 if GetKeyPressed = KE_KEY2 then
 Begin
 	SYPos:=SYPos-t;
 	DYPos:=SYPos/16;
 	MYPos:=-(SYPos mod 16)-16;
 End;
 
 for i:=1 to ScreenW do 
 for j:=1 to ScreenH do 
  begin
  xc:=DXPos+i; yc:=DYPos+j;
  if (xc>0) and (xc<=FieldW) and (yc>0) and (yc<=FieldH) then 
   begin 
   xc1:=i*16+MXPos; yc1:=j*16+MYPos;
   drawimage(MO[GameFF[xc,yc]],xc1,yc1);
  end;
 end;

  MS:=GetSecond(GetCurrentTime);
  If MS<>MSL Then
  begin
  FPS_LastCount:=FPS_Count;
  FPS_Count:=0;
  MSL:=MS;
  end 
  Else
  FPS_Count:=FPS_Count+1;
  
  SetColor(255, 255, 255); 
  DrawText('FPS:'+IntegerToString(FPS_LastCount), 0, 0);

 repaint;
 
 
end; 
end.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 03.01.2006, 12:15   #34
Red Ninja(Михайлов Никита)
Оператор ЭВМ
 
Регистрация: 30.12.2005
Сообщений: 45
Написано одно полезное сообщение
Стрелка

А мне кажеться что у тебя больше вычесдений!
(Offline)
 
Ответить с цитированием
Старый 03.01.2006, 17:10   #35
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Originally posted by Red Ninja(Михайлов Никита)@Jan 3 2006, 12:15 PM
А мне кажеться что у тебя больше вычесдений!
И где же больше?
Эта часть теперь вычисляется только если есть квадрат для отрисовки:
xc1:=i*16+MXPos; yc1:=j*16+MYPos;
Теперь части вот этих уравнений вычисляются только при нажатии соответствующей кнопки кнопки, а не при каждой итерации в циклах:

* xc:=SXPos/16+i;

* yc:=SYPos/16+j;

* xc1:=i*16-(SXPos mod 16)-16;

* yc1:=j*16-(SYPos mod 16)-16;
а именно:
if GetKeyPressed = KE_KEY6 then 
 Begin
 *SXPos:=SXPos+t;
 *DXPos:=SXPos/16;
 *MXPos:=-(SXPos mod 16)-16;
 End;
 
if GetKeyPressed = KE_KEY4 then
 *Begin
 *SXPos:=SXPos-t;
 *DXPos:=SXPos/16;
 *MXPos:=-(SXPos mod 16)-16;
 End;
 
if GetKeyPressed = KE_KEY8 then
 *Begin
 *SYPos:=SYPos+t;
 *DYPos:=SYPos/16;
 *MYPos:=-(SYPos mod 16)-16;
 End;
 
if GetKeyPressed = KE_KEY2 then
 Begin
 *SYPos:=SYPos-t;
 *DYPos:=SYPos/16;
 *MYPos:=-(SYPos mod 16)-16;
 End;
Так что, надо сначала в коде разобраться, а не бросаться фразами только глянув... код хоть и больше стал а вычисления уменьшились
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 03.01.2006, 18:58   #36
Red Ninja(Михайлов Никита)
Оператор ЭВМ
 
Регистрация: 30.12.2005
Сообщений: 45
Написано одно полезное сообщение
Так ты его код изменил
я думал мой.

У меня похоше!
(Offline)
 
Ответить с цитированием
Старый 03.01.2006, 22:12   #37
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Originally posted by Red Ninja(Михайлов Никита)@Jan 3 2006, 06:58 PM
Так ты его код изменил
я думал мой.

У меня похоше!
Да но в твоем коде нет интерполяции, т.е. передвижения на часть квадрата, а не на целый квадрат.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 04.01.2006, 08:23   #38
Red Ninja(Михайлов Никита)
Оператор ЭВМ
 
Регистрация: 30.12.2005
Сообщений: 45
Написано одно полезное сообщение
А Ремиксе 1 там на целый квадрат
А в Ремиксе 2 как интерполяции!(ну почти)
(Offline)
 
Ответить с цитированием
Старый 04.01.2006, 22:14   #39
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Originally posted by Red Ninja(Михайлов Никита)@Jan 4 2006, 08:23 AM
А в Ремиксе 2 как интерполяции!(ну почти)
Тоже самое можно сделать в коде SubZer0 сделав параметр t=16
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(MGC) Мой проект =MAK$= Проекты на Blitz3D 36 06.07.2009 06:11
Проект мяч kailzloi Проекты на Blitz3D 7 14.02.2009 22:26


Часовой пояс GMT +4, время: 00:29.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com