PureGolf

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Stefan
Beiträge: 125
Registriert: 29.08.2004 10:51
Kontaktdaten:

PureGolf

Beitrag 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
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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]
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Stefan
Beiträge: 125
Registriert: 29.08.2004 10:51
Kontaktdaten:

Beitrag von Stefan »

Ah ja, PB 4 natürlich. :allright:
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag 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

 
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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 
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ja toll, leute... und worum gehts? was ist überhaupt thema?

was machen die programme?

wo ist die aufgabenstellung?

tz.. tz.. tz..
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag 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 ;)
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag 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:
Basic Pur = PureBasic
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten