Rem ***** Main Source File *****
REM F08, mindesign entertainment

Rem ***** Includes *****
#Include "Includes/builder.dba"
Rem ********************

Rem ***** ***** Inicializ�l�s ***** *****
Rem Autocam off
Hide Mouse
Sync On : Sync Rate 60
Rem ***** ***** ***** ***** ***** *****

Rem ///// ///// Glob�lis v�ltoz�k

 Rem TPS Sug�r
 Global TPS_R As Float : TPS_R=30

 Rem Karakter
 Global Karakter As Integer : Karakter=FreeObject()

 Rem Alapok
 Global Alap As Integer : Alap=FreeObject()+100

 Rem Ugr�s v�ltoz�k
 Global MaxY# as Float : MaxY#=5.0
 Global SzintY# as Float : SzintY#=MaxY#-0.3
 Global DeltaY# as Float : DeltaY#=0.1
 Global Jump as Boolean : Jump=0
 Global yPuffer# as Float
 Global Mozgas$ : Mozgas$="elore"

 Rem Builder
 DIM map(1000,1000) as byte
 Global done as boolean


Rem Glob�lis v�ltoz�k \\\\\ \\\\\


Rem Debug Matrix
Make matrix 1,100,100,25,25

Rem TPS Kamera
Global Self As Integer : Self=1
Make object cube Self,10 : Hide object Self

Rem Karakter Bet�lt�se
Make object box Karakter, 5,10,5

Rem Alapok bet�l�se
Make object box Alap,15,5,15
Hide object Alap

Rem P�lya bet�lt�se
Build_Map(20)


Rem Main Loop
Do

Rem Alprogramok megh�v�sa
Gosub Control_Karakter
Gosub Control_Camera
Gosub Debug

Rem K�perny� friss�t�s
Sync
Loop

Rem Kamera kezel� alprogram
Control_Camera:

Rem Eg�r
Rotate object Self, Object Angle X(Self)+MouseMoveY(),Object Angle Y(Self)+MouseMoveX(),0

Rem Debug
If Object Angle X(Self)<10 then xRotate Object Self,10
If Object Angle X(Self)>50 then xRotate Object Self,50
If Object Angle Y(Self)>360 then yRotate Object Self,0
If Object Angle Y(Self)<0 then yRotate Object Self,360

Rem Asszimil�l�d�s
Position camera Object Position X(Self),Object Position Y(Self)+yPuffer#,Object Position z(Self)
Rotate camera Object Angle X(Self),Object Angle Y(Self),Object Angle Z(Self)

Rem Sug�r
Move camera TPS_R*(-1)

Return

Rem Karakter kezel� alprogram
Control_Karakter:

Rem Karakter mozgat�sa
If not jump

Mozgas$=""

If keystate(17)
 Move object Karakter,0.5
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="elore"
Endif

If keystate(31)
 Move object Karakter,-0.5
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="hatra"
Endif

If keystate(32)
 yRotate object Karakter,Object Angle Y(Karakter)+90
 Move object Karakter,0.5
 yRotate object Karakter,Object Angle Y(Karakter)-90
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="jobbra"
Endif

If keystate(30)
 yRotate object Karakter,Object Angle Y(Karakter)-90
 Move object Karakter,0.5
 yRotate object Karakter,Object Angle Y(Karakter)+90
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="balra"
Endif

Rem Sr�g
If keystate(17) and keystate(32) then Mozgas$="jobbfel"
 If keystate(17) and keystate(30) then Mozgas$="balfel"

If keystate(31)
 If keystate(32) then Mozgas$="jobble"
 If keystate(30) then Mozgas$="balle"
Endif

Rem Mozg�s v�ge
Endif

Rem Ugr�s
If spacekey() then Jump=1
If Jump
If Mozgas$="elore" then Move object Self,0.5
If Mozgas$="hatra" then Move object Self,-0.5

If Mozgas$="balra"
 yRotate object Self,Object Angle Y(Self)-90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)+90
Endif

If Mozgas$="jobbra"
 yRotate object Self,Object Angle Y(Self)+90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)-90
Endif

If mozgas$="balfel"
 Rem Fel
 Move object Self,0.5

 Rem Balra
 yRotate object Self,Object Angle Y(Self)-90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)+90
Endif


If mozgas$="jobbfel"
 Rem Fel
 Move object Self,0.5

 Rem Jobbra
 yRotate object Self,Object Angle Y(Self)+90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)-90
Endif

 If mozgas$="jobble"
 Rem Fel
 Move object Self,-0.5

 Rem Jobbra
 yRotate object Self,Object Angle Y(Self)+90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)-90
Endif

 If mozgas$="balle"
 Rem Fel
 Move object Self,-0.5

 Rem Balra
 yRotate object Self,Object Angle Y(Self)-90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)+90
Endif

  yPuffer#=(yPuffer#+(MaxY#-yPuffer#)*DeltaY#)
  If yPuffer#>=SzintY# and DeltaY#>0 then DeltaY#=(-1)*DeltaY#
  If yPuffer#<=0.005 and DeltaY#<0
    Jump=0
    DeltaY#=DeltaY#*(-1)
    yPuffer#=0
  Endif

Endif


Rem Karakter szink
Position Object Karakter, Object Position X(Self),yPuffer#,Object Position Z(Self)
Position Object Self, Object Position X(Self),0,Object Position Z(Self)
yRotate Object Karakter, Object Angle Y(Self)

Return


Rem Debug
Debug:
Set Cursor 1,1
Print "xAngle: ",Object Angle X(Self)
Print "yAngle: ",Object Angle Y(Self)
Print "FPS: ",Screen FPS()
Print Jump
Print "Y ",yPuffer#
Print "DeltaY ",DeltaY#
Print Object Position Y(Self)
Print Mozgas$
Return



Rem ********** F�ggv�nyek **********

Rem BuildMap
Function Build_Map(elemszam as integer)
 Randomize timer()
 done=0
 map(50,50)=1
 map(49,50)=1
 kirak(49,50,2,elemszam)

 For n=1 to 1000
  For m=1 to 1000
   If map(n,m)>0
    temp=FreeObject()
    Clone object temp,Alap
    Position object temp,m*17,0,n*17
   Endif
  Next m
 Next n
Endfunction

Rem FreeObject
Function FreeObject()
I=1
Repeat
I=I+1
Until Object Exist(I)=0
Endfunction I

Rem ********************************Rem 0:le,1:jobbra,2:fel,3:balra}
Rem 0:lentr�l,1:jobbr�l,2:fentr�l,3:balr�l}

DIM map(1000,1000) as byte
   Global done as boolean

   Set text font "Arial"
   Set text size 7
 randomize timer()
 done=0
 map(50,50)=1
 map(49,50)=1
 kirak(49,50,2,200)

   Rem Main
   Do
    cls
    For w=0 to 80
     For v=0 to 120
      Print map(w,v)," ";
     Next v
     Print " "
    Next w
    Sync
   Loop

Function kirak(x as integer,y as integer,honnan as integer,van_meg as integer)

   Rem Loc�lis deklar�ci�k
   Local DIM mehet(3) as boolean
   i as integer
   uj_x as integer
   uj_y as integer
   tempx as integer
   tempy as integer
   irany as integer
   jo as boolean

Rem Begin

 Rem fillchar(mehet,sizeof(mehet),true);
 For t=0 to 3
  mehet(t)=1
 Next t

 tempx=x
 tempy=y

 Select honnan
   Case 0
       mehet(2)=0
       tempx=x-1
     endcase
   Case 1
       mehet(3)=0
       tempy=y-1
     endcase
   Case 2
       mehet(0)=0
       tempx=x+1
     endcase
   Case 3
       mehet(1)=0
       tempy=y+1
     endcase
 Endselect

 i=0
 while done=0 and (i<=2)
  Rem begin
   map(x,y)=0

   irany=RND(3)

   while mehet(irany)=0
    irany=RND(3)
   endwhile

   mehet(irany)=0
   uj_x=x
   uj_y=y

   Select irany

     Case 0
      uj_x=x+1
     endcase

     Case 1
      uj_y=y+1
     endcase

     Case 2
      uj_x=x-1
     endcase
     Case 3
      uj_y=y-1
     endcase

   endselect

   jo=1

   if map(uj_x,uj_y)=1 then jo=0
   if (map(uj_x-1,uj_y)=1) then jo=0
   if (map(uj_x,uj_y-1)=1) then jo=0
   if (map(uj_x+1,uj_y)=1) then jo=0
   if (map(uj_x,uj_y+1)=1) then jo=0

   map(tempx,tempy)=0
   if (map(uj_x+1,uj_y+1)=1) then jo=0
   if (map(uj_x+1,uj_y-1)=1) then jo=0
   if (map(uj_x-1,uj_y+1)=1) then jo=0
   if (map(uj_x-1,uj_y-1)=1) then jo=0
   map(tempx,tempy)=1

   if jo
   Rem begin
     map(uj_x,uj_y)=1

     if van_meg=0
     Rem begin
       map(x,y)=1
       done=1
     else
       map(x,y)=1
       kirak(uj_x,uj_y,irany,van_meg-1)
     endif

   endif
   inc i
 endwhile

 if done=0
 Rem begin
   map(x,y)=0
 endif

Endfunction

Remstart
procedure kiir;
var f:text;
   i,j:integer;
   temp:string[101];
begin
 assign(f,'ki.ki');
 rewrite(f);
 for i:=0 to 100 do
 begin
   temp:='';
   for j:=0 to 100 do
   begin
     if map[i,j]=1 then
     begin
       temp:=temp+'X';
     end else begin
       temp:=temp+' ';
     end;
   end;
   writeln(f,temp);
 end;
 close(f);
end;

begin
 randomize;
 done:=false;
 map[50,50]:=1;
 map[49,50]:=1;
 kirak(49,50,2,200);
 kiir;
end.
Remend
[COMMON]
PathToEXE=D:\temp\Projects\f08\CrashOn_09_26_08.txt
[CEXE]
m_dwRuntimeErrorDWORD=Internal Code:12002
m_dwRuntimeErrorLineDWORD=1042
Rem ***** Included Source File *****
REM KIDA BETEG KONSZEPTJE

Rem Inicializ�l�s
Rem Autocam off
Hide Mouse
Sync On : Sync Rate 60

Rem Glob�lis v�ltoz�k

Rem TPS Sug�r
Global TPS_R As Float : TPS_R=30

Rem Karakter
Global Karakter As Integer : Karakter=FreeObject()

Rem Ugr�s v�ltoz�k
Global MaxY# as Float : MaxY#=5.0
Global SzintY# as Float : SzintY#=MaxY#-0.3
Global DeltaY# as Float : DeltaY#=0.1
Global Jump as Boolean : Jump=0
Global yPuffer# as Float
Global Mozgas$ : Mozgas$="elore"


Rem Debug Matrix
Make matrix 1,100,100,25,25

Rem TPS Kamera
Global Self As Integer : Self=1
Make object cube Self,10 : Hide object Self

Rem Karakter Bet�lt�se
Make object box Karakter, 5,10,5


Rem Main Loop
Do

Rem Alprogramok megh�v�sa
Gosub Control_Karakter
Gosub Control_Camera
Gosub Debug

Rem K�perny� friss�t�s
Sync
Loop

Rem Kamera kezel� alprogram
Control_Camera:

Rem Eg�r
Rotate object Self, Object Angle X(Self)+MouseMoveY(),Object Angle Y(Self)+MouseMoveX(),0

Rem Debug
If Object Angle X(Self)<10 then xRotate Object Self,10
If Object Angle X(Self)>50 then xRotate Object Self,50
If Object Angle Y(Self)>360 then yRotate Object Self,0
If Object Angle Y(Self)<0 then yRotate Object Self,360

Rem Asszimil�l�d�s
Position camera Object Position X(Self),Object Position Y(Self)+yPuffer#,Object Position z(Self)
Rotate camera Object Angle X(Self),Object Angle Y(Self),Object Angle Z(Self)

Rem Sug�r
Move camera TPS_R*(-1)

Return

Rem Karakter kezel� alprogram
Control_Karakter:

Rem Karakter mozgat�sa
If not jump

Mozgas$=""

If keystate(17)
 Move object Karakter,0.5
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="elore"
Endif

If keystate(31)
 Move object Karakter,-0.5
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="hatra"
Endif

If keystate(32)
 yRotate object Karakter,Object Angle Y(Karakter)+90
 Move object Karakter,0.5
 yRotate object Karakter,Object Angle Y(Karakter)-90
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="jobbra"
Endif

If keystate(30)
 yRotate object Karakter,Object Angle Y(Karakter)-90
 Move object Karakter,0.5
 yRotate object Karakter,Object Angle Y(Karakter)+90
 Position Object Self, Object Position X(Karakter),Object Position Y(Self),Object Position Z(Karakter)
 If not jump then Mozgas$="balra"
Endif

Rem Sr�g
If keystate(17) and keystate(32) then Mozgas$="jobbfel"
 If keystate(17) and keystate(30) then Mozgas$="balfel"

If keystate(31)
 If keystate(32) then Mozgas$="jobble"
 If keystate(30) then Mozgas$="balle"
Endif

Rem Mozg�s v�ge
Endif

Rem Ugr�s
If spacekey() then Jump=1
If Jump
If Mozgas$="elore" then Move object Self,0.5
If Mozgas$="hatra" then Move object Self,-0.5

If Mozgas$="balra"
 yRotate object Self,Object Angle Y(Self)-90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)+90
Endif

If Mozgas$="jobbra"
 yRotate object Self,Object Angle Y(Self)+90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)-90
Endif

If mozgas$="balfel"
 Rem Fel
 Move object Self,0.5

 Rem Balra
 yRotate object Self,Object Angle Y(Self)-90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)+90
Endif


If mozgas$="jobbfel"
 Rem Fel
 Move object Self,0.5

 Rem Jobbra
 yRotate object Self,Object Angle Y(Self)+90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)-90
Endif

 If mozgas$="jobble"
 Rem Fel
 Move object Self,-0.5

 Rem Jobbra
 yRotate object Self,Object Angle Y(Self)+90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)-90
Endif

 If mozgas$="balle"
 Rem Fel
 Move object Self,-0.5

 Rem Balra
 yRotate object Self,Object Angle Y(Self)-90
 Move object Self,0.5
 yRotate object Self,Object Angle Y(Self)+90
Endif

  yPuffer#=(yPuffer#+(MaxY#-yPuffer#)*DeltaY#)
  If yPuffer#>=SzintY# and DeltaY#>0 then DeltaY#=(-1)*DeltaY#
  If yPuffer#<=0.005 and DeltaY#<0
    Jump=0
    DeltaY#=DeltaY#*(-1)
    yPuffer#=0
  Endif

Endif


Rem Karakter szink
Position Object Karakter, Object Position X(Self),yPuffer#,Object Position Z(Self)
Position Object Self, Object Position X(Self),0,Object Position Z(Self)
yRotate Object Karakter, Object Angle Y(Self)

Return


Rem Debug
Debug:
Set Cursor 1,1
Print "xAngle: ",Object Angle X(Self)
Print "yAngle: ",Object Angle Y(Self)
Print "FPS: ",Screen FPS()
Print Jump
Print "Y ",yPuffer#
Print "DeltaY ",DeltaY#
Print Object Position Y(Self)
Print Mozgas$
Return



Rem ********** F�ggv�nyek **********

Rem FreeObject
Function FreeObject()
I=1
Repeat
I=I+1
Until Object Exist(I)=0
Endfunction I

Rem ********************************