Anfänger braucht Hilfe!
Übersicht BlitzBasic Allgemein
SpikespineBetreff: Anfänger braucht Hilfe! |
Mi, Apr 28, 2004 14:25 Antworten mit Zitat |
|
---|---|---|
Hi erstmal,
also ich bin seit schon einem Monat mit BlitzBasic beschäftigt, habe aber noch kein einziges Spiel geschafft. Ich hab dann heute mal angefangen, das Spiel "4 gewinnt" (hoffentlich kennt ihr es) zu programmieren, doch schon beim Zug des Spielers gibt es ein Problem! Könnt ihr mir verraten, warum dieser Code nich funktioniert?: Code: [AUSKLAPPEN] Graphics 800,600
Dim Loch(7,5) ; ein Feld des Spielfeldes erstellen: 7 waagrechte mal 5 senkrechte Löcher Maus = LoadImage("Pointer.bmp") : X = 1 ; X zeigt an, wo der "Chip" eingeworfen wird ; .Spielerzug Color 0,0,255 Repeat Cls LoadBuffer (BackBuffer(), "Löcher.bmp") For I = 1 To 7 ; Die Maus wird je nach If X = I Then DrawImage Maus, (I*100)-50, 30 ; Stand von X über einer Next ; der sieben Reihen gezeichnet For K = 1 To 7 For L = 1 To 5 If Loch(K,L) = 1 Then If L = 1 Then Oval (17+(X*100))-100, 501, 83, 83 ; Hier soll ein Kreis If L = 2 Then Oval (17+(X*100))-100, 401, 83, 38 ; (Chip) If L = 3 Then Oval (17+(X*100))-100, 301, 83, 83 ; in das passende If L = 4 Then Oval (17+(X*100))-100, 201, 83, 83 ; Spielfeldloch If L = 5 Then Oval (17+(X*100))-100, 101, 83, 83 ; gezeichnet werden EndIf Next Next If KeyHit(203) Then X = X - 1 ; X wird verschoben, wenn If KeyHit(205) Then X = X + 1 ; man die Pfeiltasten drückt If X < 1 Then X = 1 ; es wird verhindert, dass X die erste If X > 7 Then X = 7 ; und die siebte Spalte überschreitet If KeyHit(28) Then ; wenn die Repeat ; Eingabetaste J=0 ; gedrückt J = J + 1 ; wird, If Loch(X,J) = 0 Then ; soll If J = 1 Then Oval (17+(X*100))-100, 501, 83, 83 ; auf das If J = 2 Then Oval (17+(X*100))-100, 401, 83, 38 ; Spielfeld ein Oval If J = 3 Then Oval (17+(X*100))-100, 301, 83, 83 ; gezeichnet If J = 4 Then Oval (17+(X*100))-100, 201, 83, 83 ; werden If J = 5 Then Oval (17+(X*100))-100, 101, 83, 83 EndIf Until Loch(X,J) = 0 ; das entscheidene: das Loch erhält Loch(1,J) = 1 ; den Wert 1 EndIf Flip Until KeyHit(1) Ciao -Spikespine |
||
Gossi |
Mi, Apr 28, 2004 14:59 Antworten mit Zitat |
|
---|---|---|
An deinem Code wäre sehr viel zu verbessern. Aber besonders fällt mir diese Zeile auf:
Code: [AUSKLAPPEN] Repeat ; Eingabetaste J=0 ; gedrückt J = J + 1 Ich glaube, dass da etwas nicht stimmt. |
||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
Spikespine |
Mi, Apr 28, 2004 15:16 Antworten mit Zitat |
|
---|---|---|
So ähnlich wie ne For-Schleife, aber da gibts ja kein Until | ||
graythread |
Mi, Apr 28, 2004 15:18 Antworten mit Zitat |
|
---|---|---|
Ähh, du kannst auch jedes Mal J=1 schreiben, hat denselben Effekt;-).
Edit: Ich seh gerade, du hast 2 Repeat-Schleifen, sowas darfst du NIE machen, das kann kaum funktionieren, versuche diese mal zu umgehen! |
||
soli |
Mi, Apr 28, 2004 15:26 Antworten mit Zitat |
|
---|---|---|
Du müsstest J vor der Schleife auf 0 setzen. | ||
solitaire |
Spikespine |
Mi, Apr 28, 2004 15:48 Antworten mit Zitat |
|
---|---|---|
Oha, stimmt!
Funktioniert aber immer noch nicht wirklich, 1. wirft er nur manchmal blaue chips ein und 2. verschwindet die Maus, wenn ich sie bewegen will. Zitat: Ich seh gerade, du hast 2 Repeat-Schleifen, sowas darfst du NIE machen, das kann kaum funktionieren, versuche diese mal zu umgehen!
Warum darf ich nie 2 Repeatschleifen haben, und wie soll ich sie umgehen? Naja, das zweite kann ich ja mal versuchen... |
||
regaa |
Mi, Apr 28, 2004 15:53 Antworten mit Zitat |
|
---|---|---|
Spikespine hat Folgendes geschrieben: Zitat:
Ich seh gerade, du hast 2 Repeat-Schleifen, sowas darfst du NIE machen, das kann kaum funktionieren, versuche diese mal zu umgehen! Also 2 Repeat schleifen in sich, sind absolut kein Problem, benutz ich sehr oft, naja nicht wirklich repeat aber while (weil das die schnellste schleife ist) in while ist kein problem, und sogar 3 fahc und mehrfach verschachtelungen . Wo soll da das Problem sein? |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Spikespine |
Mi, Apr 28, 2004 16:08 Antworten mit Zitat |
|
---|---|---|
OK, ich habs in While umgeändert.
@garythread: Kannst du das mit den 2 verschachtelten Repeat-Schleifen genauer begründen? ich weiß auch nicht wo das problem sein soll... Weiß denn irgendjemand die Lösung(en) der Probleme? |
||
RallimenSieger des 30-EUR-Wettbewerbs |
Mi, Apr 28, 2004 16:11 Antworten mit Zitat |
|
---|---|---|
Hi,
1. Fehler drinn da du X anstatt k genommen hast Code: [AUSKLAPPEN] For K = 1 To 7
For L = 1 To 5 If Loch(K,L) = 1 Then If L = 1 Then Oval (17+(k*100))-100, 501, 83, 83 ; Hier soll ein Kreis If L = 2 Then Oval (17+(k*100))-100, 401, 83, 38 ; (Chip) If L = 3 Then Oval (17+(k*100))-100, 301, 83, 83 ; in das passende If L = 4 Then Oval (17+(k*100))-100, 201, 83, 83 ; Spielfeldloch If L = 5 Then Oval (17+(k*100))-100, 101, 83, 83 ; gezeichnet werden EndIf Next Next 2. gezeichnet wird oben , hier brauchste nur das Feld aktivieren habe das mal mit einer For..Next gelöst Code: [AUSKLAPPEN] If KeyHit(28) Then ; wenn die
For j = 0 To 5 ; wenn keiner mehtr frei dann wird auch keiner eingeschmissen! If Loch(X,J) = 0 Then; soll Loch(X,J) = 1; das entscheidene: das Loch erhält Exit ; schleife verlassen da ein stein drinne EndIf Next EndIf so köönte es gehen.... |
||
[BB2D | BB3D | BB+]
|
RallimenSieger des 30-EUR-Wettbewerbs |
Mi, Apr 28, 2004 16:24 Antworten mit Zitat |
|
---|---|---|
Zitat: .Spielerzug
Color 0,0,255 Repeat Cls LoadBuffer (BackBuffer(), "Löcher.bmp") Normalerweise wird das so gemacht: Code: [AUSKLAPPEN] Graphics 800,600
Dim Loch(7,5) Maus = LoadImage("Pointer.bmp") : Hintergrund = LoadImage("Löcher.bmp") SetBuffer BackBuffer() X = 1 ; X zeigt an, wo der "Chip" eingeworfen wird .Spielerzug Color 0,0,255 Repeat cls ; nur wenn unbedingt nötig drawimage Hintergrund ,0,0 oder drawblock Hintergrund ,0,0 |
||
[BB2D | BB3D | BB+]
|
Spikespine |
Mi, Apr 28, 2004 17:01 Antworten mit Zitat |
|
---|---|---|
Wahrscheinlich hab ich den ganzen Code völlig falsch gemacht denn es funzt immer noch nicht
Mein Problem: Der Mauszeiger wird nicht gezeichnet und wenn ich die Eingabetaste drücke passiert nichts! Wenn ich im Vollbildmodus bin bleibt der ganze Hintergrund schwarz |
||
RallimenSieger des 30-EUR-Wettbewerbs |
Mi, Apr 28, 2004 17:16 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600
Dim Loch(7,5) ; ein Feld des Spielfeldes erstellen: 7 waagrechte mal 5 senkrechte Löcher ;Maus = LoadImage("Pointer.bmp") : X = 1 ; X zeigt an, wo der "Chip" eingeworfen wird ; SetBuffer BackBuffer() .Spielerzug Color 0,0,255 Repeat Cls ;For I = 1 To 7 ; Die Maus wird je nach ;If X = I Then DrawImage Maus, (I*100)-50, 30 ; Stand von X über einer Rect (x*100)-50, 30 ,20,20,1;mal ohne Bild einfach nur ein rechteck ;Next ; der sieben Reihen gezeichnet For K = 1 To 7 For L = 1 To 5 If Loch(K,L) = 1 Then If L = 1 Then Oval (17+(k*100))-100, 501, 83, 83 ; Hier soll ein Kreis If L = 2 Then Oval (17+(k*100))-100, 401, 83, 83 ; (Chip) If L = 3 Then Oval (17+(k*100))-100, 301, 83, 83 ; in das passende If L = 4 Then Oval (17+(k*100))-100, 201, 83, 83 ; Spielfeldloch If L = 5 Then Oval (17+(k*100))-100, 101, 83, 83 ; gezeichnet werden EndIf Next Next If KeyHit(203) Then X = X - 1 ; X wird verschoben, wenn If KeyHit(205) Then X = X + 1 ; man die Pfeiltasten drückt If X < 1 Then X = 1 ; es wird verhindert, dass X die erste If X > 7 Then X = 7 ; und die siebte Spalte überschreitet If KeyHit(28) Then For j = 1 To 5 ; wenn keiner mehtr frei dann wird auch keiner eingeschmissen! If Loch(X,J) = 0 Then; soll Loch(X,J) = 1; das entscheidene: das Loch erhält Exit ; schleife verlassen da ein stein drinne EndIf Next EndIf Flip Until KeyHit(1) so hier anstatt des Mausbildes mal mit rect ohne Schleife! inklusive änderung |
||
[BB2D | BB3D | BB+]
|
Spikespine |
Mi, Apr 28, 2004 18:01 Antworten mit Zitat |
|
---|---|---|
Perfekt! Danke, jetzt muss ich nur noch den gegnerischen Zug programmieren und ich bin fertich! | ||
Ted1406 |
Mi, Apr 28, 2004 19:28 Antworten mit Zitat |
|
---|---|---|
Aloha,
ich bin ja auch noch nicht so weit mit meinen BlitzBasic-Kenntnissen... aber diese Zeile macht mich stutzig... Code: [AUSKLAPPEN] Dim Loch(7,5) ; ein Feld des Spielfeldes erstellen: 7 waagrechte mal 5 senkrechte Löcher Bei 7 x 5 müsste es doch dann... Dim Loch(6,4) ...heißen, oder? Ted1406 |
||
Kryan |
Mi, Apr 28, 2004 19:46 Antworten mit Zitat |
|
---|---|---|
Ich benutz' meistens die 0 bei einem DIm-Feld nicht, da dadrin dann platz für andere sachen sind
könnte man gut für ki in diesem spiel verwenden oder so... |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
regaa |
Mi, Apr 28, 2004 20:34 Antworten mit Zitat |
|
---|---|---|
Ted1406 hat Folgendes geschrieben: Bei 7 x 5 müsste es doch dann... Dim Loch(6,4) ...heißen, oder?
Ted1406 Richtig |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
RallimenSieger des 30-EUR-Wettbewerbs |
Mi, Apr 28, 2004 20:37 Antworten mit Zitat |
|
---|---|---|
Es gibt viele die erst mit 1 anfangen und die null felder leer lassen,
weil es zum teil einfacher ist bzw. verständlicher ! |
||
[BB2D | BB3D | BB+]
|
Ted1406 |
Do, Apr 29, 2004 6:34 Antworten mit Zitat |
|
---|---|---|
Na gut, dann habe ich daraus wenigstens gelernt, dass dies keinen Fehler verursacht...
Ted1406 |
||
storzi |
Do, Apr 29, 2004 11:08 Antworten mit Zitat |
|
---|---|---|
dadurch dass du das feld größer definierst werden ressourcen verschwendet, das ist hier zwar nicht so tragisch aber es geht ja ums prinzip | ||
http://www.splattergamez.de |
Omenaton_2 |
Do, Apr 29, 2004 11:40 Antworten mit Zitat |
|
---|---|---|
Spikespine hat Folgendes geschrieben: Perfekt! Danke, jetzt muss ich nur noch den gegnerischen Zug programmieren und ich bin fertich!
Hehe, das wird lustig. Du mußt sehr bald feststellen, daß das was du bisher gemacht hast der sehr viel leichtere und kleinere Teil der Arbeit war, als das was jetzt "nur noch" kommt. Ich wünsche dir viel Glück! |
||
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group