Scoreanzeige

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Jufi

Betreff: Scoreanzeige

BeitragMo, Okt 02, 2006 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich wollte in meine Weltraumshooter einen punktezähler einbauen, habe es dann

font = LoadFont("Times New Roman",20,0,0,0)
SetFont font
Text 10,10, "Score:" + score
If score = Alien(I,0) = -1 Then score = 5
Flip
FlushKeys
FreeFont font

mit dem Code oben probiert, aber wenn ich starte schreibt er "Array index out
of bounds"! Wass muss ich ändern, damit es funktioniert?
Danke im voraus!

Cardonic

BeitragMo, Okt 02, 2006 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Willkommen hier im Forum Very Happy

Man bräuchte ein bisschen mehr Code, um sehen zu können, worin das Problem besteht.
So z.B. weiss ich nicht wie "gross" dein Dim-Feld ist und die Variabel I ist mir auch unbekannt.

mfg Cardonic

~edit~ Achja, und benutze immer Code-Tags, um deinen Code besser lesbarer zu machen und vom Rest deines Posts hervorzuheben:
Code: [AUSKLAPPEN]
[code]....[/code]
  • Zuletzt bearbeitet von Cardonic am Mo, Okt 02, 2006 17:03, insgesamt einmal bearbeitet

Jufi

BeitragMo, Okt 02, 2006 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
wieviel mehr? (Ich könnte den Text vom ganzen Spiel hochladen, wenn nötig Very Happy )

Blitzcoder

Newsposter

BeitragMo, Okt 02, 2006 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wäre sicher nicht schlecht.

Vermutlich ist das Dim feld "Alien zu klein. Mach es einfach mal um einen Wert grösser. Man vertut sich da leicht, auch weil die Zählung bei 0 beginnt.

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
  • Zuletzt bearbeitet von Blitzcoder am Mo, Okt 02, 2006 17:06, insgesamt einmal bearbeitet

Cardonic

BeitragMo, Okt 02, 2006 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Es muss einfach das Wesentliche her.
Wenn du den ganzen Code hier postest, dann ist bestimmt genug da, um den Fehler zu finden Wink

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Jufi

BeitragMo, Okt 02, 2006 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, wie ihr wollt

; Shooter.bb
Graphics 640, 480
SetBuffer BackBuffer()
hinter = LoadImage("Hinter.bmp")
schiff = LoadImage("spaceship.bmp")
alienbild = LoadImage("Alien.bmp")
rakete = LoadImage("Schuss.bmp")
schusston = LoadSound("gun_shotgun2.WAV")
trefferton = LoadSound("rockbeast_die.WAV")
menue = LoadImage("Menue.bmp")

Dim Rak(100,2)
Dim Al(100,2)
Dim Alien(5,2)
Dim AlienExplodiert(5,1)
x = 305
y = 420

;hauptmenü
.menue
Cls
DrawImage menue,0,0
If KeyDown(1) Then End
If KeyDown(28) Then Goto start
Flip

Goto menue
.start
Repeat
Cls
H = H+1
If H=200 Then H=0
TileBlock hinter,0,H
DrawImage schiff, X,Y

;Pause
If KeyDown(197) Or KeyDown(25) Then
font = LoadFont("Times New Roman",80,0,0,0)
SetFont font
Text 150,200, "P A U S E"
Flip
FlushKeys
WaitKey
FreeFont font
EndIf

;Schuß-Test
If KeyHit(57) Then
Schuss = Schuss + 1
If Schuss = 101 Then Schuss = 1
Rak(Schuss,0) = 1
Rak(Schuss,1) = X+10
Rak(Schuss,2) = Y-19
PlaySound(schusston)
EndIf

;Score
font = LoadFont("Times New Roman",20,0,0,0)
SetFont font
Text 10,10, "Score:" + score
If score = Alien(I,0) = -1 Then score = 5
Flip
FlushKeys
FreeFont font

; ggf. Raketen zeichnen
For I=1 To 100
If Rak(1,0) = 1 Then
DrawImage rakete, Rak(I,1), Rak(I,2)
Rak(I,2) = Rak(I,2) - 10
EndIf
Next

;Pfeiltasten Abfragen
If KeyDown(200) = 1 Then Y = Y - 1
If KeyDown(208) = 1 Then Y = Y + 1
If KeyDown(205) = 1 Then X = X + 2
If KeyDown(203) = 1 Then X = X - 2

;Rand überschreitung verhindern
If X < 0 Then X = 0
If X > 609 Then X = 609
If Y < 0 Then Y = 0
If Y > 449 Then Y = 449

;Kollision testen
For I=1 To 100
If Rak(I,0) <> 0 Then
For J=1 To 5
If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete, Rak(I,1), Rak(I,2))Then
PlaySound(trefferton)
Alien(J,0) = -1
EndIf
Next
EndIf
Next

;Explosion Alien zeichnen
For I=1 To 5
If Alien(I,0) = -1 Then
If AlienExplodiert(I,1) + 100 < MilliSecs() Then
AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
AlienExplodiert(I,1) = MilliSecs()

If AlienExplodiert(I,0) = 6 Then
AlienExplodiert(I,0) = 0
AlienExplodiert(I,1) = 0
Alien(I,0) = 0
EndIf
EndIf
EndIf
Next

;Alien Steuerung
For I=1 To 5
If Alien(I,0) = 0 Then
Alien(I,0) = Rand(100,400)
Alien(I,1) = Rand(-20,640)
Alien(I,2) = Rand(-100,0)
EndIf

If Alien(I,0) <> -1 Then
Alien(I,2) = Alien(I,2) + 1
Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf

If Alien(I,2) > 480 Then Alien(I,0) = 0

If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

Flip
Until KeyDown(1)
End

Viel Spass beim Fehlersuchen Laughing
  • Zuletzt bearbeitet von Jufi am Mo, Okt 02, 2006 17:22, insgesamt einmal bearbeitet

Blitzcoder

Newsposter

BeitragMo, Okt 02, 2006 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte benutze die Code Tags.

Bitte wie soll das gehen?
Code: [AUSKLAPPEN]
If score = Alien(I,0) = -1 Then score = 5


Zweimal "=". Ausserdem frage ich mich, wo das I herkommt. Die Variable I wird nur stänndig in For schleifen benutzt. und zwar bis 100. Ab ende der schleife ist der wert also immer 100. Das Dim Feld Alien geht aber nur bis 100.

MfG Blitzcoder

EDIT: Wenn es geht, dann lade doch mal die ganzen datein mit hoch. Die Grafiken und so, wenn du nichts dagegen hast. Denn wenn man den Code zum laufen bringt, geht es immer besser, den fehler zu finden. Du kannst die Grafiken ja zippen und hier ins Archiv laden.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

Jufi

BeitragMo, Okt 02, 2006 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh, wohin laden? (Sry, bin seit ca.10 min im Forum Aktiv Wink)

Cardonic

BeitragMo, Okt 02, 2006 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Du zählst bei der Kollisionsabfrage den Score hoch:
Code: [AUSKLAPPEN]
;Kollision testen
[...]
If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete, Rak(I,1), Rak(I,2))Then
PlaySound(trefferton)
Alien(J,0) = -1
Score = Score + 5 ; <--- Hier
EndIf
[...]
Next

Und schmeisst dafür die Zeile, die Blitzcoder schon angesprochen hat, raus (die mit den zwei "=")

Was ich sonst noch beachten würde:
1) Wenn ich dich wäre, dann würde ich auf die Zeileneinrückung achten.
2) Bilder, Sounds und/oder Schriften nie in der Hauptschleife laden

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Jufi

BeitragMo, Okt 02, 2006 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab die Zeilen rückung eigentlich schon, aber im Forum wird es merkwürdigerweise nicht angezeigt

Cardonic

BeitragMo, Okt 02, 2006 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann ist ja gut. Wenn du die besagten Code-Tags benutzen würdest, dann würde die Zeileneinrückung angezeigt werden.

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Jufi

BeitragMo, Okt 02, 2006 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiss, dass es DP ist, aber:
1.Die Gegner sind sehr langsam geworden!
2.Die Gegner "flimmern"!
3.Die Schusstaste ist manchmal "taub"!
4.für einen Abschuss kriegt man mehr Punkte als normal!
Ich hoffe ihr könnt mir helfen! Wink

Hummelpups

BeitragMo, Okt 02, 2006 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitzcoder hat Folgendes geschrieben:
Zweimal "=". Ausserdem frage ich mich, wo das I herkommt. Die Variable I wird nur stänndig in For schleifen benutzt. und zwar bis 100. Ab ende der schleife ist der wert also immer 100. Das Dim Feld Alien geht aber nur bis 100.

Ach ja? Wink

Code: [AUSKLAPPEN]
For steps=1 To 5
Next
Print steps


IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

bruce85

BeitragMo, Okt 02, 2006 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich hab mal ein kleines Beispiel geschrieben wie die Punkte hoch gezählt werden.

Hier mal mein Code:

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()

Global Punkte=0,Punktezaehler=0

;Die Hauptschleife
Repeat
  Cls

  ;Punkte anzeigen
  Text 20,20,"Punkte: "+Punkte

  ;Wenn die Leertaste gedrück wird, wird
  ;Punktezaehler um jeweils 10 erhöt
  If KeyHit(57) Then
    Punktezaehler = Punktezaehler + 10
  EndIf

  ;jede 60 Millisekunde wird Punkte um 1 erhöt bis es
  ;den Punktezaehler entspricht
  If MilliSecs()-timer > 60 Then
    timer = MilliSecs()
    If Not Punkte = Punktezaehler Then
      Punkte = Punkte + 1
    EndIf
  EndIf

  Flip
Until KeyHit(1)

End


kannst es ja dementsprechend in deinem Spiel einbauen Wink

Gruss Andreas

Jufi

BeitragDi, Okt 03, 2006 7:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

...........
 Punkte = 0, Punktezaehler = 0
...........

Aber da sagt er immer "Expecting until or Forever!

Cardonic

BeitragDi, Okt 03, 2006 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab den Code 1:1 kopiert, und es funktioniert einwandfrei.

Die Fehlermeldung, die bei dir kommt, bedeutet, dass die While-Schleife nicht richtig geschlossen ist (oder eine If-Abfrage o.Ä. innerhalb der While-Schleife).

Überprüfe, ob du nicht die letzten paar Zeilen vergessen hast, oder versehentlich etwas geändert wurde.

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Jufi

BeitragDi, Okt 03, 2006 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
nachgeprüft, hab aber nichts gefunden

Cardonic

BeitragDi, Okt 03, 2006 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst ihn ja ein zweites mal kopieren; der Code ist wirklich nicht fehlerhaft.

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Jufi

BeitragDi, Okt 03, 2006 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Programm aleine funktioniert schon, aber wenn ich es ins Spiel einbaue gehts nicht mehr!

BladeRunner

Moderator

BeitragDi, Okt 03, 2006 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Du sollst ihn ja auch verstehen und anpassen, nicht einfach einpasten.
Vielleicht solltest Du erstmal Grundwissen erlangen, also mach bitte ein paar tutorials durch bevor Du hier nach Nichtigkeiten fragst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group