forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   проект (http://forum.boolean.name/showthread.php?t=481)

jimon 28.12.2005 23:39

короче несколько вопросов-направлений для балагана :)
1) возможно ли нормальная, комерческая разработка проекта на Midletpascal'е ?

2)какие будут идеи по проекту

3)есть ли уже готовые проекты ?

SubZer0 29.12.2005 00:32

1. возможна... допустим карточные игры или чтонить подобное, постое...

2. идеи - самые простые... физику конечно реализовать не получится, но какие нить ребусы или ченить подобное...

3. пока еще нет, но мне тут один постучался в аську, грит нужен MidletPascal программист... дороворились мы с ним с нового года начать работать... посмотрим что из этого получится...

3.1. имхо лучше на MobileBasic, там уже поддержка тайловых карт есть... на MidletPascal движение по карте реализовать весьма проблематично, а че за игра если даже по карте перещаться нельзя...

:)

Guest 29.12.2005 07:29

Видемо вы плохо знаете MidletPascal!
Карту как на MobileBasic написать очень легко!

Да и жанр игры может быть любой от гонок до аркады.

И необманывай есть игры на MidletPascal,пошарте по форумам найдёте,есть очень даже достойные.

SubZer0 29.12.2005 18:56

значит гришь карту реализовать как раз плюнуть... хотелось бы посмотреть как это можно сделать...

у меня даже есть небольшие наброски по такому поводу...

http://boolean.name/archive/temp/Tanks.zip

и мне чето никто ничего вразумительного не может сказать, как это усовершенствовать, чтоб это работало не 6 ФПС а больше

Red Ninja 29.12.2005 20:23

Неазнаю у меня на X100 нетормозит!

jimon 29.12.2005 22:57

народ ! неправильно строим код !
смотреть на мой пример (крестики нолики без ai и пару недоработок)
+ я незделал то что midlet на паузу может уходить

Код:

program game1;
var

//midlet main varibales
 run:boolean;
 need_to_update:boolean;
 Midlet_reboot:boolean;

//game variables
 a:array[1..3,1..3] of integer;
 buf1,buf2:integer;
 winer:integer;

procedure Cls;
begin
        setcolor(255,255,255);
        fillRect(0, 0, 128, 128);
        setcolor(0,0,0);
end;

procedure Midlet_update;
begin
        if Midlet_reboot=true then
 begin
 for buf1:=1 to 3 do
        for buf2:=1 to 3 do
  a[buf1,buf2]:=0;
 Midlet_reboot:=false;
 need_to_update:=true;
 end;

        repaint;       
        need_to_update:=false;
end;

procedure Graphics;
begin
        for buf1:=1 to 3 do
        for buf2:=1 to 3 do
        begin

        drawline(buf1*10,buf2*10,(buf1+1)*10,buf2*10);
        drawline(buf1*10,buf2*10,buf1*10,(buf2+1)*10);

 if a[buf1,buf2]=1 then
 begin
        drawline(buf1*10,buf2*10,(buf1+1)*10,(buf2+1)*10);
        drawline(buf1*10,(buf2+1)*10,(buf1+1)*10,buf2*10);
 end;

 if a[buf1,buf2]=2 then drawEllipse(buf1*10+1,buf2*10+1,10,10);
        end;
       
        drawline(40,10,40,40);
        drawline(10,40,40,40);
end;

procedure Ai;
begin
//fuccckkkk
end;

procedure Keys;
begin
if getKeyPressed<>KE_NONE then
        begin
 if getKeyPressed=KE_KEY1 then if a[1,1]=0 then a[1,1]:=1;
 if getKeyPressed=KE_KEY2 then if a[2,1]=0 then a[2,1]:=1;
 if getKeyPressed=KE_KEY3 then if a[3,1]=0 then a[3,1]:=1;
 if getKeyPressed=KE_KEY4 then if a[1,2]=0 then a[1,2]:=1;
 if getKeyPressed=KE_KEY5 then if a[2,2]=0 then a[2,2]:=1;
 if getKeyPressed=KE_KEY6 then if a[3,2]=0 then a[3,2]:=1;
 if getKeyPressed=KE_KEY7 then if a[1,3]=0 then a[1,3]:=1;
 if getKeyPressed=KE_KEY8 then if a[2,3]=0 then a[2,3]:=1;
 if getKeyPressed=KE_KEY9 then if a[3,3]=0 then a[3,3]:=1;
 if getKeyPressed=KE_KEY0 then run:=false;
 if getKeyPressed=KE_STAR then Midlet_reboot:=true;

 need_to_update:=true;
        end;
end;

procedure Find_Winer;
begin


end;

procedure Update_Game;
begin
        if need_to_update=true then
        begin
 Cls;
 Graphics;
 Midlet_update;
 Ai;
 Find_Winer;
        end;
        Keys;
       

end;

begin
        //midlet start run
        run:=true;
        need_to_update:=true;
        //main loop
 while run=true do Update_Game;
end.

учитесь ! :))

jimon 29.12.2005 22:58

так так... к минусам (ОГРОМНЫМ МИНУСАМ) я отношу то что нету в midletpascalе команды goto !

Red Ninja 30.12.2005 12:18

Это точно!

SubZer0 30.12.2005 13:14

Цитата:

Originally posted by Red Ninja@Dec 29 2005, 07:23 PM
Неазнаю у меня на X100 нетормозит!
у меня на мотороллере Е398 - 6-8 ФПС... :'((

а на эмуле MidpX - 120

SubZer0 30.12.2005 13:16

Цитата:

Originally posted by jimon@Dec 29 2005, 09:58 PM
так так... к минусам (ОГРОМНЫМ МИНУСАМ) я отношу то что нету в midletpascalе команды goto !
ага... goto forever!! ;) ;)

Red Ninja 30.12.2005 14:28

SubZer0
У тебя в Танке занов всю картинку ресиет,а надо чтобы поодельности!
Процедуру создай чтобы она определяла где камера(типо камера ;) )находиться
и отрисовывала ту чать которую надо,а не ташило всю картику!

P.S Я Танчик толком непосмотрел,скинь ещё раз ссылку!

Red Ninja 30.12.2005 14:42

ВОт этим воспользуйся:

SetClip(int x, int y, int width, int height);
width,height-Разрешения монитора!!!

Red Ninja 30.12.2005 14:47

Но я это только нашёл так и непонел чё это! :(

SubZer0 30.12.2005 16:06

Цитата:

Originally posted by Red Ninja@Dec 30 2005, 01:28 PM
SubZer0
У тебя в Танке занов всю картинку ресиет,а надо чтобы поодельности!
Процедуру создай чтобы она определяла где камера(типо камера ;) )находиться
и отрисовывала ту чать которую надо,а не ташило всю картику!

P.S Я Танчик толком непосмотрел,скинь ещё раз ссылку!

ты наверное не доконца понял весь смысл проги...

это показ тайловой карты на экран...

это рассчет позиций: ((xc, yc) - позиция на карте по тайлам, (xc1,yc1) - позиция тайлов на экране (для плавности))

xc:=SXPos/16+i;
yc:=SYPos/16+j;
xc1:=i*16-(SXPos mod 16)-16;
yc1:=j*16-(SYPos mod 16)-16;


а это выводит картинки на экран: (плюс условия на предотвращения ошибок выхода за границу карты)

if (xc>=1) and (xc<=FieldW) and (yc>=1) and (yc<=FieldH) then begin
drawimage(MO[GameFF[xc,yc]],xc1,yc1);
end;


хз где ты там нашел что картинка рисуется вся...

тут я рассчитываю сколько тайлов влезет на экран:
ScreenW:=GetWidth/16+1;
ScreenH:=GetHeight/16+2;

и пускаю по этим значениям главный цикл:
for i:=1 to ScreenW do for j:=1 to ScreenH do begin ........................


:dontknow: :dontknow:

SubZer0 30.12.2005 16:22

Цитата:

Originally posted by Red Ninja@Dec 30 2005, 01:47 PM
Но я это только нашёл так и непонел чё это! :(
SetClip это определение отображаемого участка экрана, и потом в его пределах можно рисовать, а за его пределами не получится :)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot