Seite 1 von 3

PureGolf

Verfasst: 18.03.2006 15:43
von Stefan
Hallo
Die Regeln sind die gleichen wie hier
außer, dass Befehle wie RunProgram(),WinExec_(),CreateProcess_(),ShellExecute_(),ShellExecuteEx_(),... nicht erlaubt sind.
1693

Code: Alles auswählen

Structure Player
  x.l
  y.l
  dir.l
EndStructure

Procedure Check(Result)
  If Result=0
    MessageRequester("ERROR","Can't init screen!",#MB_ICONERROR)
    End
  EndIf
  ProcedureReturn Result
EndProcedure

Check(InitSprite())
Check(InitKeyboard())

hWnd=Check(OpenWindow(1,0,0,640,480,"Snake",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget))
Check(CreateGadgetList(hWnd))
Check(OpenWindowedScreen(hWnd,0,0,640,480,0,0,0))
SetFrameRate(30)

RandomSeed(6)
For count=0 To 200
  DisplayRGBFilter(Random(640),Random(480),10,10,Random(128)+127,Random(128)+127,Random(128)+127)
Next

P1.Player
P1\x=160
P1\y=240
P1\dir=1
P2.Player
P2\x=480
P2\y=240
P2\dir=2
Repeat
  
  Select P1\dir
    Case 1
      P1\y-1
    Case 2
      P1\y+1
    Case 3
      P1\x-1
    Case 4
      P1\x+1
  EndSelect
  
  Select P2\dir
    Case 1
      P2\y-1
    Case 2
      P2\y+1
    Case 3
      P2\x-1
    Case 4
      P2\x+1
  EndSelect
  
  If P1\x<0 Or P1\x>639 Or P1\y<0 Or P1\y>479:Loser=1:EndIf
  If P2\x<0 Or P2\x>639 Or P2\y<0 Or P2\y>479:Loser=2:EndIf
  
  StartDrawing(ScreenOutput())
  
  If Loser=0
    If Point(P1\x,P1\y)<>0:Loser=1:EndIf
    If Point(P2\x,P2\y)<>0:Loser=2:EndIf
    
    Plot(P1\x,P1\y,#Yellow)
    Plot(P2\x,P2\y,#Red)
    
    If Point(P2\x+1,P2\y) And P2\dir=4:P2\dir=1:EndIf
    If Point(P2\x-1,P2\y) And P2\dir=3:P2\dir=2:EndIf
    If Point(P2\x,P2\y-1) And P2\dir=1:P2\dir=3:EndIf
    If Point(P2\x,P2\y+1) And P2\dir=2:P2\dir=4:EndIf
  EndIf
  
  StopDrawing()
  
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Up):P1\dir=1:EndIf
  If KeyboardPushed(#PB_Key_Down):P1\dir=2:EndIf
  If KeyboardPushed(#PB_Key_Left):P1\dir=3:EndIf
  If KeyboardPushed(#PB_Key_Right):P1\dir=4:EndIf
  
  FlipBuffers()
  
  If Loser
    Select Loser
      Case 1
        MessageRequester("Info","Der Computer hat gewonnen.",#MB_ICONINFORMATION)
      Case 2
        MessageRequester("Info","Sie haben gewonnen.",#MB_ICONINFORMATION)
    EndSelect
    End
  EndIf
  
Until WindowEvent()=#PB_Event_CloseWindow

Verfasst: 18.03.2006 16:42
von zigapeda
1540

Code: Alles auswählen

Structure Player
  x.l
  y.l
  dir.l
EndStructure

Procedure Check(Result)
  If Result=0
    MessageRequester("ERROR","Can't init screen!",16)
    End
  EndIf
  ProcedureReturn Result
EndProcedure

Check(InitSprite())
Check(InitKeyboard())

hWnd=Check(OpenWindow(1,0,0,640,480,"Snake",13107200|1|13238272))
Check(CreateGadgetList(hWnd))
Check(OpenWindowedScreen(hWnd,0,0,640,480,0,0,0))
SetFrameRate(30)

RandomSeed(6)
For count=0 To 200
  DisplayRGBFilter(Random(640),Random(480),10,10,Random(128)+127,Random(128)+127,Random(128)+127)
Next

P1.Player
P1\x=160
P1\y=240
P1\dir=1
P2.Player
P2\x=480
P2\y=240
P2\dir=2
Repeat
 
  Select P1\dir
    Case 1
      P1\y-1
    Case 2
      P1\y+1
    Case 3
      P1\x-1
    Case 4
      P1\x+1
  EndSelect
 
  Select P2\dir
    Case 1
      P2\y-1
    Case 2
      P2\y+1
    Case 3
      P2\x-1
    Case 4
      P2\x+1
  EndSelect
 
  If P1\x<0 Or P1\x>639 Or P1\y<0 Or P1\y>479:Loser=1:EndIf
  If P2\x<0 Or P2\x>639 Or P2\y<0 Or P2\y>479:Loser=2:EndIf
 
  StartDrawing(ScreenOutput())
 
  If Loser=0
    If Point(P1\x,P1\y)<>0:Loser=1:EndIf
    If Point(P2\x,P2\y)<>0:Loser=2:EndIf
   
    Plot(P1\x,P1\y,#Yellow)
    Plot(P2\x,P2\y,#Red)
   
    If Point(P2\x+1,P2\y) And P2\dir=4:P2\dir=1:EndIf
    If Point(P2\x-1,P2\y) And P2\dir=3:P2\dir=2:EndIf
    If Point(P2\x,P2\y-1) And P2\dir=1:P2\dir=3:EndIf
    If Point(P2\x,P2\y+1) And P2\dir=2:P2\dir=4:EndIf
  EndIf
 
  StopDrawing()
 
  ExamineKeyboard()
  If KeyboardPushed(200):P1\dir=1:EndIf
  If KeyboardPushed(208):P1\dir=2:EndIf
  If KeyboardPushed(203):P1\dir=3:EndIf
  If KeyboardPushed(205):P1\dir=4:EndIf
 
  FlipBuffers()
 
  If Loser
    Select Loser
      Case 1
        MessageRequester("Info","Der Computer hat gewonnen.",64)
      Case 2
        MessageRequester("Info","Sie haben gewonnen.",64)
    EndSelect
    End
  EndIf
 
Until WindowEvent()=16
[Edit]noch ne frage, in den regeln steht PB3.8 ich hab entweder PB3.94 oder eine der PB4 betas welche darf/soll ich jetzt genau verwenden?[/Edit]

Verfasst: 18.03.2006 17:01
von Stefan
Ah ja, PB 4 natürlich. :allright:

Verfasst: 18.03.2006 17:22
von zigapeda
1374
[Edit]1363[/Edit]
[Edit2]1339[/Edit2]

Code: Alles auswählen

Structure T
  x.l
  y.l
  i.l
EndStructure

Macro R
  Random(
EndMacro

Macro K
  KeyboardPushed(
EndMacro

Macro M
  MessageRequester("
EndMacro

Macro P
  Point(
EndMacro

Procedure C(S)
  If S
    ProcedureReturn S
  EndIf
  M ERROR","Can't init screen!",16)
  End
EndProcedure

C(InitSprite()&InitKeyboard())

h=C(OpenWindow(1,0,0,640,480,"Snake",13107200|1|13238272))
C(OpenWindowedScreen(h,0,0,640,480,0,0,0))
SetFrameRate(30)

RandomSeed(6)
For c=0 To 200
  DisplayRGBFilter(R 640),R 480),10,10,R 128)+127,R 128)+127,R 128)+127)
Next

P1.T
P1\x=160
P1\y=240
P1\i=1
P2.T
P2\x=480
P2\y=240
P2\i=2
Repeat
 
  Select P1\i
    Case 1
      P1\y-1
    Case 2
      P1\y+1
    Case 3
      P1\x-1
    Case 4
      P1\x+1
  EndSelect
 
  Select P2\i
    Case 1
      P2\y-1
    Case 2
      P2\y+1
    Case 3
      P2\x-1
    Case 4
      P2\x+1
  EndSelect
 
  If P1\x<0 Or P1\x>639 Or P1\y<0 Or P1\y>479:L=1:EndIf
  If P2\x<0 Or P2\x>639 Or P2\y<0 Or P2\y>479:L=2:EndIf
 
  StartDrawing(ScreenOutput())
 
  If L=0
    If P P1\x,P1\y)<>0:L=1:EndIf
    If P P2\x,P2\y)<>0:L=2:EndIf
    
    Plot(P1\x,P1\y,65535)
    Plot(P2\x,P2\y,255)
   
    If P P2\x+1,P2\y) And P2\i=4:P2\i=1:EndIf
    If P P2\x-1,P2\y) And P2\i=3:P2\i=2:EndIf
    If P P2\x,P2\y-1) And P2\i=1:P2\i=3:EndIf
    If P P2\x,P2\y+1) And P2\i=2:P2\i=4:EndIf
  EndIf
 
  StopDrawing()
 
  ExamineKeyboard()
  If K 200):P1\i=1:EndIf
  If K 208):P1\i=2:EndIf
  If K 203):P1\i=3:EndIf
  If K 205):P1\i=4:EndIf
 
  FlipBuffers()
 
  If L
    Select L
      Case 1
        M Info","Der Computer hat gewonnen.",64)
      Case 2
        M Info","Sie haben gewonnen.",64)
    EndSelect
    End
  EndIf
 
Until WindowEvent()=16

Verfasst: 18.03.2006 17:41
von Franky
Edit:1224 Btw: Spiel ich hier alleine? O_o

Code: Alles auswählen

Structure I
  x.l
  y.l
  d.l
EndStructure


Macro E
    EndIf
EndMacro

Macro Z
      Case
EndMacro
     
Macro K(f)
   KeyboardPushed(#PB_Key_#f)
EndMacro
     
Macro V
      MessageRequester("Info","
EndMacro     
 

Macro C(f)
  j=f
  If j=0
    MessageRequester("ERROR","Can't init screen!",#MB_ICONERROR)
    End
  E
EndMacro

Macro P
     Point(
EndMacro     

Macro R
     Random(
EndMacro     


a=640
b=480
C(InitSprite())
C(InitKeyboard())

C(OpenWindow(1,0,0,a,b,"Snake",13238273))
C(OpenWindowedScreen(j,0,0,a,b,0,0,0))
SetFrameRate(30)

RandomSeed(6)
For count=0 To 200
  DisplayRGBFilter(R a),R b),10,10,R 128)+127,R 128)+127,R 128)+127)
Next
h.i
h\x=160
h\y=240
h\d=1
g.i
g\x=b
g\y=240
g\d=2
t:
 With h 
  Select \d
    Z 1
      \y-1
    Z 2
      \y+1
    Z 3
      \x-1
    Z 4
      \x+1
  EndSelect
 
  If \x<0 Or \x=>a Or \y<0 Or h\y=>b
        L=1
  E
 
  ExamineKeyboard()
  If K(Up)
      \d=1
  E
  If K(Down)
     \d=2
  E
  If K(Left)
      \d=3
  E
  If K(Right)
     \d=4
  E

  StartDrawing(ScreenOutput())
 
  If L=0
    If P \x,\y)
       L=1
    E
    Plot(\x,\y,#Yellow)
    EndWith
    With g
        If \x<0 Or \x=>a Or \y<0 Or \y=>b
            L=2
        E       
        Select \d
          Z 1
            \y-1
          Z 2
            \y+1
          Z 3
            \x-1
          Z 4
            \x+1
        EndSelect
    If P \x,\y)
       L=2
    E
    Plot(\x,\y,#Red)
    If P \x+1,\y) And \d=4
       \d=1
    E
    If P \x-1,\y) And \d=3
       \d=2
    E
    If P \x,\y-1) And \d=1
       \d=3
    E
    If P \x,\y+1) And \d=2
       \d=4
    E
    EndWith
  E
 
  StopDrawing()
 
 
  FlipBuffers()
 
  If WindowEvent()=16 Or L
    Select L
      Z 1
        V Der Computer hat gewonnen.",#MB_ICONINFORMATION)
      Z 2
        V Sie haben gewonnen.",#MB_ICONINFORMATION)
    EndSelect
    End
  E
Goto t

 

Verfasst: 18.03.2006 18:37
von zigapeda
Franky hat geschrieben:Edit:1224 Btw: Spiel ich hier alleine? O_o
Nein ich spiel auch mit^^
1158
[Edit]1155[/Edit]

Code: Alles auswählen

Structure I
  x.l
  y.l
  d.l
EndStructure


Macro E
    EndIf
EndMacro

Macro Z
      Case
EndMacro
     
Macro K(f)
   KeyboardPushed(f)
EndMacro
     
Macro V
      MessageRequester("Info","
EndMacro     
 

Macro C(f)
  j=f
  If j=0
    MessageRequester("ERROR","Can't init screen!",16)
    End
  E
EndMacro

Macro P
     Point(
EndMacro     

Macro R
     Random(
EndMacro     


a=640
b=480
C(InitSprite()&InitKeyboard())

C(OpenWindow(1,0,0,a,b,"Snake",13238273))
C(OpenWindowedScreen(j,0,0,a,b,0,0,0))
SetFrameRate(30)

RandomSeed(6)
For c=0 To 200
  DisplayRGBFilter(R a),R b),10,10,R 128)+127,R 128)+127,R 128)+127)
Next
g.i
g\x=b
g\y=240
g\d=2
h.i
 With h
\x=160
\y=240
\d=1
t:
  Select \d
    Z 1
      \y-1
    Z 2
      \y+1
    Z 3
      \x-1
    Z 4
      \x+1
  EndSelect
 
  If \x<0 Or \x=>a Or \y<0 Or h\y=>b
        L=1
  E
 
  ExamineKeyboard()
  If K(200)
      \d=1
  E
  If K(208)
     \d=2
  E
  If K(203)
      \d=3
  E
  If K(205)
     \d=4
  E

  StartDrawing(ScreenOutput())
 
  If L=0
    If P \x,\y)
       L=1
    E
    Plot(\x,\y,65535)
    EndWith
    With g
        If \x<0 Or \x=>a Or \y<0 Or \y=>b
            L=2
        E       
        Select \d
          Z 1
            \y-1
          Z 2
            \y+1
          Z 3
            \x-1
          Z 4
            \x+1
        EndSelect
    If P \x,\y)
       L=2
    E
    Plot(\x,\y,255)
    If P \x+1,\y) And \d=4
       \d=1
    E
    If P \x-1,\y) And \d=3
       \d=2
    E
    If P \x,\y-1) And \d=1
       \d=3
    E
    If P \x,\y+1) And \d=2
       \d=4
    E
    EndWith
  E
 
  StopDrawing()
 
 
  FlipBuffers()
 
  If WindowEvent()=16 Or L
    Select L
      Z 1
        V Der Computer hat gewonnen.",64)
      Z 2
        V Sie haben gewonnen.",64)
    EndSelect
    End
  E
Goto t 

Verfasst: 18.03.2006 19:24
von Kaeru Gaman
ja toll, leute... und worum gehts? was ist überhaupt thema?

was machen die programme?

wo ist die aufgabenstellung?

tz.. tz.. tz..

Verfasst: 18.03.2006 19:27
von Franky
1126
Edit: 1115
->Edit: 1098

Code: Alles auswählen

Structure I
  x.l
  y.l
  d.l
EndStructure


Macro W(j)
  If \x<0 Or \x=>a Or \y<0 Or h\y=>b
        L=j
  E
  Select \d
    Z 1
      \y-1
    Z 2
      \y+1
    Z 3
      \x-1
    Z 4
      \x+1
  EndSelect
EndMacro

Macro E
    EndIf
EndMacro

Macro Z
      Case
EndMacro
     
Macro K(f)
   KeyboardPushed(f)
EndMacro
     
Macro V
      MessageRequester("Info","
EndMacro     
 

Macro C(f)
  j=f
  If j=0
    MessageRequester("ERROR","Can't init screen!",16)
    End
  E
EndMacro

Macro P
     Point(
EndMacro     

Macro R
     Random(
EndMacro     


a=640
b=480
C(InitSprite()&InitKeyboard())

C(OpenWindow(1,0,0,a,b,"Snake",13238273))
C(OpenWindowedScreen(j,0,0,a,b,0,0,0))
SetFrameRate(30)

RandomSeed(6)
For c=0 To 200
  DisplayRGBFilter(R a),R b),10,10,R 128)+127,R 128)+127,R 128)+127)
Next
g.i
g\x=b
g\y=240
g\d=2
h.i
 With h
\x=160
\y=240
\d=1
t:
  W(1) 
  ExamineKeyboard()
  If K(200)
      \d=1
  E
  If K(208)
     \d=2
  E
  If K(203)
      \d=3
  E
  If K(205)
     \d=4
  E

  StartDrawing(ScreenOutput())
 
  If L=0
    If P \x,\y)
       L=1
    E
    Plot(\x,\y,65535)
    EndWith
    With g
        W(2)
    If P \x,\y)
       L=2
    E
    Plot(\x,\y,255)
    If P \x+1,\y) And \d=4
       \d=1
    E
    If P \x-1,\y) And \d=3
       \d=2
    E
    If P \x,\y-1) And \d=1
       \d=3
    E
    If P \x,\y+1) And \d=2
       \d=4
    E
    EndWith
  E
 
  StopDrawing()
 
 
  FlipBuffers()
 
  If WindowEvent()=16 Or L
    Select L
      Z 1
        V Der Computer hat gewonnen.",64)
      Z 2
        V Sie haben gewonnen.",64)
    EndSelect
    End
  E
Goto t
@Kaeru: siehe erster post und testen ;)

Verfasst: 18.03.2006 19:45
von Sylvia
Ich mache auch mit...aber erst, wenns um die Feinarbeit geht und ich
mindestens 2 meiner Gehirnzellen damit belasten muss 8)

Ausserdem sieht mir das ganze noch zu übersichtlich aus... :mrgreen:

Verfasst: 18.03.2006 19:54
von Kaeru Gaman
Franky hat geschrieben:@Kaeru: siehe erster post und testen ;)
haha!

das geht nicht, weil ich noch 3.94 hab...

ich meine.. hallo?

bei nem wettbewerb gehört ne aufgabenstellung hin, oder?