PureGolf

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Nicht Teil vom Wettbewerb, sondern Code für Kaeru:

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,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget,"Snake"))
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

och danke, das is aber lieb von dir.. n_n"


...und wie sind die bedingungen?

muss man den vorhandenen code kürzen?

...eigentlich lauten die regeln ja so, daß man ein "gleichwertiges" programm schreibt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

siehe hier: http://www.mentaloverflow.de/purecontest/contest01.htm
sowie Anfang vom Thread :wink:

// Nachtrag: Dort findeste auch den Counter!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also, wenn ihr meine fragen nicht beantworten wollt, dann spielt eben alleine! :p
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Habs doch beantwortet :freak:
1. Programmiert wird in PureBasic 3.9 +. Erlaubt sind nur PureBasic-Befehle, Inline-Assembler und die WinAPI, keine Extra-Libraries, keine DLLs
2. Das Programm muss also so wie es hier steht, lauffähig sein
3. Die Zeichenanzahl des Codes wird mit diesem Programm gemessen:
http://www.robsite.de/puregolf/puregolf_counter.pb
4. In diesen Thread posten darf nur, wer eine kleinere Version als sein Vordermann hat
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Stefan
Beiträge: 125
Registriert: 29.08.2004 10:51
Kontaktdaten:

Beitrag von Stefan »

Hat keiner mehr lust mitzumachen ?
995 (Damit es für Sylvia nicht mehr so übersichtlich aussieht)

Code: Alles auswählen

Macro W(j,x,y,d) 
  If x<0 Or x=>a Or y<0 Or 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 Y 
      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",$CA0001)) 
C(OpenWindowedScreen(j,0,0,a,b,0,0,0)) 
 
RandomSeed(6) 
m=128
n=127 
For c=0 To 200 
  DisplayRGBFilter(R a),R b),10,10,R m)+n,R m)+n,R m)+n) 
Next 
w=b 
j=240 
u=2
q=160 
v=j 
s=SetFrameRate(30) 
t: 
  W(1,q,v,s) 
  ExamineKeyboard() 
  If K(200) 
      s=1 
  E 
  If K(208) 
     s=2 
  E 
  If K(203) 
      s=3 
  E 
  If K(205) 
     s=4 
  E 

  StartDrawing(ScreenOutput()) 
  
  If L=0 
    If P q,v) 
       L=1 
    E 
    Plot(q,v,65535) 

 
        W(2,w,j,u) 
    If P w,j) 
       L=2 
    E 
    Plot(w,j,255) 
    If P w+1,j)And u=4 
       u=1 
    E 
    If P w-1,j)And u=3 
       u=2 
    E 
    If P w,j-1)And u=1 
       u=3 
    E 
    If P w,j+1)And u=2 
       u=4 
    E 
  E 
  StopDrawing() 
  
  FlipBuffers() 
  
  If WindowEvent()=16 Or L 
    Select L 
      Z 1 
        Y Der Computer hat gewonnen.",64) 
      Z 2 
        Y Sie haben gewonnen.",64) 
    EndSelect 
    End 
  E 
Goto t
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ts-soft hat geschrieben:Habs doch beantwortet :freak:
1. Programmiert wird in PureBasic 3.9 +. Erlaubt sind nur PureBasic-Befehle, Inline-Assembler und die WinAPI, keine Extra-Libraries, keine DLLs
2. Das Programm muss also so wie es hier steht, lauffähig sein
3. Die Zeichenanzahl des Codes wird mit diesem Programm gemessen:
http://www.robsite.de/puregolf/puregolf_counter.pb
4. In diesen Thread posten darf nur, wer eine kleinere Version als sein Vordermann hat
...und woher bitte hast du das zitiert?


dieser link:
http://www.mentaloverflow.de/purecontest/contest01.htm

enthält das:
1. Wettbewerb
PureGolf

PureGolf ist eine Variante von PerlGolf. Ein vorgegebenes Programm muss in sowenig Code wie möglich geschrieben werden. Dabei kommt es nicht auf lesbarkeit oder schöne formatierung an, was zählt ist die Buchstabenanzahl des Sourcecodes.
Der Wettbewerb ist abgeschlossen. Wer trotzdem noch Code dazu hat, kann ihn im entsprechenden Thread des Forums posten.


Die Regeln:


Programmiert wird in PureBasic 3.8. Erlaubt sind nur PureBasic-Befehle, Inline-Assembler und die WinAPI, keine Extra-Libraries, keine DLLs.


Das Programm muss also so wie es hier steht, lauffähig sein. Zugriff auf Proceduren, DLLs, Includefiles etc. die nicht mit dabei sind, ist verboten...


Das Programm muss möglichst exakt dem Beispielprogramm entsprechen. Mit allen Gadgets, Farben, Features etc.


Die Zeichenanzahl des Codes wird mit diesem Programm gemessen: http://www.robsite.de/puregolf/puregolf_counter.pb


In diesen Thread posten darf nur, wer eine kleinere Version als sein Vordermann hat, alles andere wird gelöscht (Kommentare in einem zulässigen Post mit Code sind natürlich erlaubt...)


Mitmachen kann jeder, bis auf den Threadstarter.



Die Aufgabe:

Conways Game of Life
Das Game of Life von John Conway ist ein zweidimensionaler zellulärer Automat. Jede Zelle kann zwei Zustände annehmen: lebendig oder tot.
Man geht alle Zellen durch und wendet auf jede drei einfache Regeln an, nach denen sie entweder stirbt, lebendig wird oder so bleibt wie sie ist:

1. Eine tote Zelle wird in der nächsten Generation lebendig, wenn sie genau drei lebendige Nachbarzellen hat (Birth/Geburt)

oder

2. Eine lebendige Zelle bleibt auch in der nächsten Generation lebendig, wenn sie zwei oder drei lebende Nachbarzellen hat (Survival/Überleben).
oder oder

3. Alle Zellen, bei denen die Voraussetzungen der Regeln 1 und 2 nicht zutreffen, sind in der nächsten Generation tot (Tod durch Überfüllung oder Tod durch Einsamkeit).

oder oder oder

Man kann nicht vorraussehen, wie es sich entwickelt, man muss es für jede Generation ausrechnen. Genau das macht den Reiz von Life aus.
Es gibt viele verschiedene Muster, die sich unterschiedlich entwickeln:

Stabile Muster
Sie verändern sich nicht, sterben nicht und bleiben einfach wie sie sind.





Die Oszillatoren
Sie oszillieren/alternieren zwischen zwei oder mehr Zuständen.





Gleiter / Raumschiffe
Auch wenn die Regeln nichts über Bewegung von Mustern aussagen, gibt es erstaunlicherweise doch welche, die sich fortbewegen:



Es gibt auch Gleiterkanonen, Weichen, Spiegel etc., aber die sind zu groß um sie hier zu zeigen. Google hilft weiter.


Besonders interessant ist das R-Pentomino

Startet man es, erhält man viele verschiedene Muster (Gleiter, Oszilatoren, ...).


Los gehts!



Einsendungen:



Platz Name Codegröße in Zeichen Download
1 Sylvia 403 life01.pb
2 The_Pharao 404 life02.pb
3 NoOneKnows 406 life03.pb
4 Deeem2031 408 life04.pb
5 GPI 421 life05.pb
6 NicTheQuick 440 life06.pb
7 Danilo 510 life07.pb
8 freedimension 998 life08.pb
also bitteschön, woher kommen diese anderen regeln???????

verdammt, heut is schon ein scheiß tag.....
aber dann noch verarscht werden...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Welche anderen Regeln, habs nur aktualisiert, ist alles enthalten. Hab nur
die wichtigsten Regeln auf den Nenner gebracht :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

achja?
zigapeda hat geschrieben:[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]
Stefan hat geschrieben:Ah ja, PB 4 natürlich. :allright:
was also ist mit deinem 3.9+ ?

ist es wirklich zu viel verlangt, infos haben zu wollen?

mich stört weniger, das dieser pseudo-wettbewerb beschissen dokumentiert ist,
vor allem stört mich, daß ich dafür das ich frage angeschaut werde als wär ich ein huhn mit drei köpfen!

bei dem alten wettbewerb gab es einen thread mit den lösungspost, und eine website mit den regeln.

....aber anscheinend ist es wirklich zuviel verlangt, informationen haben zu wollen,
oder mal zu fragen, worum es in irgendeinem merkwürdigen thread in der plauderecke eigentlich geht...

posten darf nur, wer ne kleinere version hat... na doll.. kleinere version von was?

ich hab die kleinste version:

Code: Alles auswählen

MessageRequester("Info","Verloren!",#MB_ICONINFORMATION)
_________________
Simon says: Kiss my Ass!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> was also ist mit deinem 3.9+ ?
Alle Version ab PB 3.9, also auch 4.
Was ist daran unklar, mit 3.8 kann wohl kaum einer Testen. :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten