Mein Programm klappt nicht:(

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

Kleiner satan

Betreff: Mein Programm klappt nicht:(

BeitragSa, Jul 08, 2006 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich hab erst gestern mit BB angefangen!
also bin absuluter noob!

ich habe heute versucht ein moorhuhn artiges spiel in Blitz Basic zu machen!
Nur klappt es nicht!
Hier ist der code:
Code: [AUSKLAPPEN]
Cls
Graphics 1024,768,16,1
v1=LoadImage("vogel1.bmp")
v2=LoadImage("vogel2.bmp")
kreuz=LoadImage("kreuz.bmp")
hintergrund=LoadImage("hintergrund.bmp")
Repeat
rand1 = Rnd(1,50)
If rand1 = 1 Then
 rand2 = Rnd(1,2)
 rand3 = Rnd(1,500)
 Dim vogelx(20)
 Dim vogely(20)
 Dim vogel(20)
 For i=0 To 20
  If vogel(i) = 0 Then
   vogel(i) = rand2
   If rand2 = 1 Then vogelx(i) = 1
   Else vogelx(i) = 1024
   vogely(i) = rand3
  EndIf
 Next
EndIf
For n=0 To 20
 vogelx(n) = vogelx(n) + 1
 DrawImage v1,vogelx(n),vogely(n)
Next
Cls
TileImage hintergrund, 1, 1
SetBuffer BackBuffer()
x = MouseX()
y = MouseY()
DrawImage kreuz, x, y
Flip
Until KeyHit(1)
End


Als Fehlermeldung bekomme ich: "Array Index out of bounds"
Heißt so viel wie Array Index ist außer der Grenze!

Makiert wird dann diese zeile: vogelx(n) = vogelx(n) + 1
ich hoffe ihr könnt mir helfen!

danke

Schnittlauch

Unkraut

BeitragSa, Jul 08, 2006 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Du must die Arrays auserhalb der Repeat schleifen erstellen.
Ich wars nicht.

Hubsi

BeitragSa, Jul 08, 2006 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Dim vogelx(20)
Dim vogely(20)
Dim vogel(20)
Das hat in der Schleife relativ wenig zu suchen. Die Grafikausgabe ist auch recht wirr (wirst Du aber noch selbst sehen, wenn Du nicht viel siehst) und das setzen des (Back)Buffer in der Schleife macht hier auch keinen großen Sinn Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Kleiner satan

BeitragSa, Jul 08, 2006 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ich eiß der buffer muss weiter nach oben!
aber warum funktioniert das mit dem array in der 1. for schlreife?

Hubsi

BeitragSa, Jul 08, 2006 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst das Array beliebig oft redimensionieren (dabei gehen aber alle darin enthaltenen Daten verloren) und es müsste schon mit dem Teufel zugehen wenn Du ausgerechnet beim ersten Durchlauf als Zufallszahl eine 1 kriegst, so das er die Arrays überhaupt dimensioeren würde Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Kleiner satan

BeitragSa, Jul 08, 2006 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ok!
aber jketzt hab ich n anderes problem!

hier is der code:
Code: [AUSKLAPPEN]
Cls
Graphics 1024,768,16,1
v1 =LoadImage("vogel1.bmp")
v2 =LoadImage("vogel2.bmp")
kreuz=LoadImage("kreuz.bmp")
hintergrund=LoadImage("hintergrund.bmp")
 Dim vogelx(20)
 Dim vogely(20)
 Dim vogel(20)
Repeat
SetBuffer BackBuffer()
rand1 = Rnd(1,50)
If rand1 = 1 Then
 rand2 = Rnd(1,2)
 rand3 = Rnd(1,500)

 For i=0 To 20
  If vogel(i) = 0 Then
   vogel(i) = rand2
   If rand2 = 1 Then vogelx(i) = 1
   Else vogelx(i) = 1024
   vogely(i) = rand3
  EndIf
 Next
EndIf

For n=0 To 20
 If vogel(n) = 1 Then vogelx(n) = vogelx(n) + 1: DrawImage v1, vogelx(n), vogely(n)
 If vogel(n) = 2 Then vogelx(n) = vogelx(n) - 1: DrawImage v2, vogelx(n), vogely(n)
Next

Cls
TileImage hintergrund, 1, 1
SetBuffer BackBuffer()
x = MouseX()
y = MouseY()
DrawImage kreuz, x, y
Flip
Until KeyHit(1)
End


das problem ist das er sagt das die bilder in der 2. forschlreife nicht existieren!
obwohl ich sie doc geladen hab!

EDIT: Achja...in den ordener gibt es die bilder auch!

Thorsten

BeitragSa, Jul 08, 2006 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
erstmal : dein code ist total durcheinander

dadurch wirst du die vögelchen nie sehen können Wink
etwas optimiert (";" vor das was früher war und Kommentare) :

________________________________________________________
;Cls
Graphics 1024,768,16,1
SetBuffer BackBuffer()
SeedRnd MilliSecs() ;Damit der Zufall auch wirklich zum Zufall wird Wink
Global v1 =LoadImage("vogel1.bmp")
Global v2 =LoadImage("vogel2.bmp")
Global kreuz=LoadImage("kreuz.bmp")
Global hintergrund=LoadImage("hintergrund.bmp")

Du kannst auch gleich 1 Dim Feld mit mehr DImensionen nehmen
Dim vogel(20,2)
; Dim vogelx(20)
; Dim vogely(20)
; Dim vogel(20)
Repeat
;SetBuffer BackBuffer() - HIER Nur am Anfang nötig
rand1 = Rand(1,50)
If rand1 = 1 Then
rand2 = Rand(1,2)
rand3 = Rand(1,500)

For i=0 To 20
If vogel(i,0) = 0 Then
vogel(i,0) = rand2
If rand2 = 1 Then vogel(i,1) = 1
Else vogel(i,1) = 1024
vogel(i,2) = rand3
EndIf
Next
EndIf

For n=0 To 20
If vogel(n,0) = 1 Then vogel(n,1) = vogel(n,1) + 1: DrawImage v1, vogel(n,1), vogel(n,2)
If vogel(n,0) = 2 Then vogel(n,1) = vogel(n,1) - 1: DrawImage v2, vogel(n,1), vogel(n,2)
Next

;Cls
TileImage hintergrund, 1, 1
;SetBuffer BackBuffer() - Schon wieder ?? xD
x = MouseX()
y = MouseY()
DrawImage kreuz, x, y
Flip
Until KeyHit(1)
End
___________________________________________________________

EDIT : sry dass ich es nich im code tag gemacht habe, aber dann hätte ich nichts markieren können!

Kleiner satan

BeitragSa, Jul 08, 2006 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank! Very Happy
aber wie gesagt ich bin ein noob

EDIT: ähm...das problem mit dem bild is aba immernoch da

Kleiner satan

BeitragSa, Jul 08, 2006 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
achja...und wenn irgenteiner das problem mit den blidern gelöst hat frag ich mich warum im code der vogel dann kommt und sobald noch einer kommt ersetz wird!
also es kommt der vogel, aber nach n paar sekunden ist der weg un kommt n neuner an ner anderen stelle!
eigentlich sollte doch dann die nächste varriable (eigentöich array) belegt werden!

Thorsten

BeitragSa, Jul 08, 2006 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir IST das problem mit dem bildladen aber nicht mehr da!
du hast die dateien einfach nicht im ordner Rolling Eyes

cya,
BlindGuy

Kleiner satan

BeitragSa, Jul 08, 2006 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen

Kabelbinder

Sieger des WM-Contest 2006

BeitragSa, Jul 08, 2006 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Willkommen am Blitzforum.
(Ich hoffe, ich bin als nicht-Mod im Standpunkt, dir sowas zu sagen Smile )

Sind Bild Datein vielleicht umbenannte .gif Datein oder sowas? Das ist mir nämlich früher mal passiert.

Außerdem. Könnte es sein, dass sich die Vögel alle auf einem Haufen bewegen und man deshalb immer nur einen sieht?
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Kleiner satan

BeitragSa, Jul 08, 2006 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
nein du hast das nochnit verstanden
also das mit dem haufen geht ja nit
wenn der vogel in der mitte is oder áuch schon früher kommt nicht noch n vogel dazu sondern der alte verschwinden und der neue taucht am rand auf!
und das mit dem bild kann au nit sein weil ich die namen sogar schion reinkopiert hab!
 

Kaplan

BeitragSa, Jul 08, 2006 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du den BB code in dem Ordner gesavet, wo die Bilder drin sind? Das passiert mir auch sehr oft o.O.


Und willkommen im BB Forum xD.
"Jedes Ereigniss hinterlässt eine Narbe in der Seele des Beteiligten. Manche sind größer als andere, manche aber teilen deine Seele in Zwei."


User posted image
User posted image

Kleiner satan

BeitragSa, Jul 08, 2006 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ich hab es dort gesavet
und soga da auch gestartet

Kabelbinder

Sieger des WM-Contest 2006

BeitragSa, Jul 08, 2006 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine ich ja.
Weil sie alle auf einem Haufen Schwimmen sieht man immer nur einen Vogel.

Wenn dieser Haufen ne Zeit lang geflogen ist (wenn rand1 = 1 ist)
Wird der gesamte Vogelhaufen wieder an die Startposition versetzt. und so sieht man immer nur den obersten Vogel und die darunter nicht.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Kleiner satan

BeitragSa, Jul 08, 2006 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie sollte ich das beheben?

d-bug

BeitragSa, Jul 08, 2006 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@Kabelbinder
Warum sollten 'normalsterbliche' User andere User nicht begrüßen dürfen?

@Kleiner satan
Willkommen an Bord!

Hier mal meine Verbesserungsvorschläge:
Code: [AUSKLAPPEN]
Graphics 1024,768,16,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Global v1 =LoadImage("vogel1.bmp")
Global v2 =LoadImage("vogel2.bmp")
Global kreuz=LoadImage("kreuz.bmp")
Global hintergrund=LoadImage("hintergrund.bmp")

Dim vogel(20,2)

Repeat

  rand1 = Rand(1,50)
  If rand1 = 1 Then
    rand2 = Rand(1,2)
    rand3 = Rand(1,500)

    For i=0 To 20
      If vogel(i,0) = 0 Then
        vogel(i,0) = rand2
        If rand2 = 1 Then vogel(i,1) = 1
      Else vogel(i,1) = 1024
        vogel(i,2) = rand3
      EndIf
    Next
  EndIf

  ;---------------------------------------------------------------------
  ; Hintergrund muß vor allem anderen gezeichnet werden
  ; sonst überzeichnet man alle Vögel ja wieder damit...
  ;---------------------------------------------------------------------
  TileImage hintergrund, 1, 1


  For n=0 To 20
    If vogel(n,0) = 1 Then vogel(n,1) = vogel(n,1) + 1: DrawImage v1, vogel(n,1), vogel(n,2)
    If vogel(n,0) = 2 Then vogel(n,1) = vogel(n,1) - 1: DrawImage v2, vogel(n,1), vogel(n,2)
   Next

  DrawImage kreuz, MouseX(), MouseY()

  ;---------------------------------------------------------------------
  ; Hier muss natürlich ein CLS hin, nur eben nach dem
  ; flippen. Kann alternativ auch am Anfang des Loops
  ; stehen
  ;---------------------------------------------------------------------
  Flip : Cls

Until KeyHit(1)
End

So, da ich deine GFX nicht habe, kann ich nur vermuten, dass es so geht!
Habe das gerade aus dem Kopf geändert.

cheers
  • Zuletzt bearbeitet von d-bug am Sa, Jul 08, 2006 21:54, insgesamt einmal bearbeitet

Kleiner satan

BeitragSa, Jul 08, 2006 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm...kannst du das in code tag machen?
weil in blitz basic tags kann man das nit gut kopieren!

EDIT:hab schon, danke

d-bug

BeitragSa, Jul 08, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ohoo... done!

Ach ja, wenn du das nächste mal Screenshots uploaden willst, dann benutze
besser JPG oder PNG. BMP sprengt die downloads von Modemusern... Wink

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group