Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 01:59

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Snake Tutorial - Ja oder Nein?

Discussion on Snake Tutorial - Ja oder Nein? within the AutoIt forum part of the Coders Den category.

View Poll Results: Snake Tutorial - Ja oder Nein
Ja 14 82.35%
Nein 3 17.65%
Voters: 17. You may not vote on this poll

Reply
 
Old 04/09/2010, 18:39   #16
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by .nAno View Post
ok, wie versprochen veröffentliche ich hier schonmal den Source Code.
Ich hab mir die Sache mit dem Tutorial nochmal durch den Kopf gehn lassen und mich entschieden lieber eine Art Workshop daraus zu machen

Ziel davon soll es sein das Programm selbeständig und ohne größere Hilfe (abgesehn von kleinen Tipps) selber nochmal zu schreiben.
Ich werd dann in nem Spoiler am Ende des Tutorials natürlich auch den Source nochmal einfügen, falls man mal wirklich nicht weiterkommt.

Die bereits erwähnten Tipps befassen sich nicht mit den Funktionen die verwendet werden (da ich nichts weiter Ausgefallenes gebraucht habe sollte jeder etwas Fortgeschrittene das auch so verstehn ) sondern mit hartnäckigen Fehlerquellen oder Stellen an denen ich selber Probleme hatte.

Im Moment ist mir allerdings noch ein kleiner Bug bekannt:

Wenn man ne höhere Punktzahl erreicht friert sich das Programm irg. wann ein
Grund: Ich hab nen Scanner eingebaut der überprüft ob sich ein neues Futterkorn (also wenn die Schlange das Alte gefressen hat und eine Neues her muss) unter einem Segment des Körpers befindet.
Falls ja, soll er solange ne neue zufällige Position wählen und scannen bis alles passt.
Wenn das nun aber recht viele Körpersegmente sind ist a) die Warscheinlichkeit höher, dass die neue Position sich an einer schlechten Stelle befindet und b.) das Scannen dauert länger

Lösung:
1.) Den Pc über den Tag stehn lassen und warten (hat bei mir nach ca. 3 Stunden wieder geklappt )

2.) ...warten bis zum Workshop

Ich denke ich werd ihn soweit mir nichts dazwischen kommt Samstag oder Sonntag schreiben, bis dahin:

Viel Spaß mit dem Source
Ach Schade und ich dachte du hast das mit GDI Plus gemacht ...
Shadow992 is offline  
Thanks
1 User
Old 04/09/2010, 18:43   #17
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
Ich fühl mich mit GDI noch nicht wirklich wohl und als ich hiermit begonnen hab hatte ich noch gar keinen Plan davon...

Vllt. mach ich das nächste Game damit (auch wenn ich jetzt wohl kaum zu jedem nen Tut oder so machen werde o0)
.nAno is offline  
Old 04/09/2010, 19:01   #18
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Quote:
Ach Schade und ich dachte du hast das mit GDI Plus gemacht ...
.

Hab ich ihm auch gesagt, aber seine Umsetzung ist auch gut gemacht. GDI+ wäre hier nicht nötig. Es wäre eher ein Problem für die Anfänger.
Würde man ein größeres Projekt erstellen geb ich dir recht. GDI+ ist schneller und in großen Code´s auch strukturierter. Aber ich hab kein Problem, dass das Projekt mit GUI Elementen erstellt wurde
HardCore.1337 is offline  
Old 04/09/2010, 19:03   #19
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by General Desert View Post
.

Hab ich ihm auch gesagt, aber seine Umsetzung ist auch gut gemacht. GDI+ wäre hier nicht nötig. Es wäre eher ein Problem für die Anfänger.
Würde man ein größeres Projekt erstellen geb ich dir recht. GDI+ ist schneller und in großen Code´s auch strukturierter. Aber ich hab kein Problem, dass das Projekt mit GUI Elementen erstellt wurde
Ich habe auch kein problem damit , aber GDI+ hätte mich mehr interessiert als GUI-Elemente
Shadow992 is offline  
Thanks
1 User
Old 04/09/2010, 19:05   #20
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
ich probier das mal zu brücksichtigen, wenn ich soweit bin mit GDI
.nAno is offline  
Old 04/12/2010, 18:33   #21
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by .nAno View Post
...Wenn man ne höhere Punktzahl erreicht friert sich das Programm irg. wann ein
Grund: Ich hab nen Scanner eingebaut der überprüft ob sich ein neues Futterkorn (also wenn die Schlange das Alte gefressen hat und eine Neues her muss) unter einem Segment des Körpers befindet.
Falls ja, soll er solange ne neue zufällige Position wählen und scannen bis alles passt.
Wenn das nun aber recht viele Körpersegmente sind ist a) die Warscheinlichkeit höher, dass die neue Position sich an einer schlechten Stelle befindet und b.) das Scannen dauert länger...
Ich hab mir zwar deinen Source nicht angeschaut, bin grad auf Arbeit, aber so wie du den Fehler beschreibst scheint es mir dass du einen rekursiven Functionsaufruf nutzt beim scannen. Dadurch kann ein Stackoverflow entstehen, wodurch die Funktion nie beendet wird und sich dass Programm aufhängt.
| Moep | is offline  
Old 04/12/2010, 19:02   #22
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
Naja, gegen den Stackoverflow würde ja ne spezielle Speicherverwaltung helfen, Ich glaub aber ehr, dass es für die von dir genannte rekursive Funktion teilweise keinen Abbruch gibt

Ich hab mal MsgBoxen in die Funktion eingesetzt umzu sehn wieoft das Programm durchläuft bis es eine Lösung gibt, nach ca. 10 Körperteilen wird die Überprüfung mehr als 1mal wiederholt, ab 20 oft deutlich mehr als 5mal (Im Spiel merkt man da nichts von, da das alles ja rasend schnell geschieht ).
Die MsgBoxen werden auch wenn lange keine Lösung gefunden wird immer wieder angezeigt.
Würde mich aber trotzdem freuen, wenn du mir mal genaueres dazu nach der Arbeit sagen könntest, wenn du dir den Source mal angesehn hast, bei meinem Praktikum hab ich nur sograde an der Oberfläche gekratzt was das angeht
.nAno is offline  
Old 04/13/2010, 15:33   #23
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Sry, gestern nichtmehr hier reingeschaut. Ich guck mir mal den Source an heut abend.

Edit.: Ok rekursiv tust da direkt nix aufrufen. Jedoch setzt du in Zeile 182 die Laufvariable wenn dass Futter in der schlange ist wieder auf 0, was wohl der Grund des Fehlers sein wird.
Rekursiv wäre es, wenn du eine Function in sich selbst aufrufst, z.B.:
Code:
Func snake()
	If False Then snake()
EndFunc
wiki sagt dazu:
Quote:
Wird eine Rekursion zu häufig durchgeführt, so kann das Computerprogramm abstürzen, weil der Speicher irgendwann nicht mehr ausreicht. Bei jedem Aufruf wird der Stack neu beschrieben, allerdings werden die alten Variablen und Adressen manchmal dabei nicht zerstört. Es empfiehlt sich daher den Speicher per Hand freizugeben (falls dies möglich ist) oder auf Rekursive Programmierung zu verzichten, da sich alle Probleme theoretisch auch mit Schleifen lösen lassen.
Ich probier mal zu erklären wie ich an das Snake Futter Problem rangehen würde. Und zwar ist die Schlange ein Array und der leere Raum ist ein Array. Alle Elemente beider Arrays zusammengenommen ist die Gesamte Spielfläche. Also Schlange + leerer Raum, ohne dass ein Element doppelt vorkommt.
Wenn die Schlange sich nun in den raum bewegt kannst du mit _ArrayPush das Array der Schlange und dass Array des Raumes anpassen.
Wenn die Schlange etwas frisst, kannst du mit _ArrayAdd den neuen wert ans SnakeArray hängen und mit _ArrayDelete in den leerenRaumArray löschen. Neues Futter bekommst du nun direkt, indem du dir einen zufälligen Index von den leerenRaumArray erzeugst. Da ja nun alle elemente in dem leerenRaumArray nicht in der Schlange sind, hast du gleich beim ersten Versuch dein Futter.

Einziger Haken an der Sache, _ArrayPush funktioniert nur bei eindimensionalen Arrays. Also musst du entweder selber so eine Funktion schreiben, oder du brichst das 2d array in ein 1d array runter. Indem du z.b. die Pixel von 0 bis 90000 durchnummerierst. Oder sie in einen String umwandelst, also z.B. "23|15" und diesen dann später wieder splittest...
| Moep | is offline  
Reply

Tags
autoit, snake, tutorial


Similar Threads Similar Threads
Win 7 ja oder nein ?
08/23/2010 - Technical Support - 21 Replies
Ho ! Wollt fragen ob Win 7 32 Bit auf dem PC gut läuft : 1,43 GB Ram Nvidia Geforce 6100 ( Ist aber denk ich unwichtig ^^ ) amd Sempron 2800+ Und ich will jetzt keinen Link zu den Systemanforderungen , ich weiß sie selber . Die Frage ist nur ob es den PC dann nicht unbrauchbarer und langsamer macht als er davor war ! MFG
nein oder?
02/24/2009 - Metin2 - 11 Replies
ich lese grade im vid von apic, das metin am 20.3.09 zugemacht wird? ehrlich? stimmt das? verlässliche quellen? mfg
Ja oder Nein?
06/28/2008 - Off Topic - 7 Replies
Was sagt ihr? :p
Was nun JA oder NEIN ?
09/30/2005 - World of Warcraft - 2 Replies
Hi leute, um nochmal klar zu stellen für alle, würd ich nun gerne wissen ob nun ne mehr oder weniger funktionsfähige sharp version veröffentlicht wird oder nich? was bringt dem einfachen nutzer des sharp das denn wenn der opensource geht? nix eigentlich denk ich mir mal oder? kann da ja nicht einfach rumschreiben wenn ich nix blick. danke schonmal für eure antworten! mfG



All times are GMT +1. The time now is 02:00.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.