Mein Programm klappt nicht:(
Übersicht

![]() |
Kleiner satanBetreff: Mein Programm klappt nicht:( |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
![]() |
SchnittlauchUnkraut |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du must die Arrays auserhalb der Repeat schleifen erstellen. | ||
Ich wars nicht. |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Dim vogelx(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 Dim vogely(20) Dim vogel(20) ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja ich eiß der buffer muss weiter nach oben!
aber warum funktioniert das mit dem array in der 1. for schlreife? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
erstmal : dein code ist total durcheinander
dadurch wirst du die vögelchen nie sehen können ![]() 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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
vielen dank! ![]() aber wie gesagt ich bin ein noob EDIT: ähm...das problem mit dem bild is aba immernoch da |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei mir IST das problem mit dem bildladen aber nicht mehr da!
du hast die dateien einfach nicht im ordner ![]() cya, BlindGuy |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Willkommen am Blitzforum.
(Ich hoffe, ich bin als nicht-Mod im Standpunkt, dir sowas zu sagen ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja ich hab es dort gesavet
und soga da auch gestartet |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wie sollte ich das beheben? | ||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ä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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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... ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group