Mein Programm klappt nicht:(
Übersicht

Gehe zu Seite Zurück 1, 2, 3 Weiter
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
jo mch ich!
achja...zu dem code...die vögel beamen sich immernoch an den anfang! |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, dann lad mal deine Bilder hoch, damit man das besser testen kann. Aber bitte als Zip. ![]() cheers |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok hab ich gemacht!
http://kleinersatan.kl.funpic.de/bilder.zip |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, hilft dir wahrscheinlich nicht viel weiter, aber so funktionierts.
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,3) ;--------------------------------------------------------------------------------------- ; erstmal einen Haufen Vögeln die Koordianten zuweisen ; und vorrallem eine Grundrichtung setzen, das hattest du vergessen. ; Grundkoordinaten sind extra weit auseinander ; (-1024 links und +1024 rechts) gesetzt damit die Vögel ; auch zufällig erscheinen, und nicht alle an der gleichen stelle. ;--------------------------------------------------------------------------------------- For i = 0 To 20 vogel(i,0) = Rand(1,2) If vogel(i,0) = 1 Then vogel(i,1) = Rand(-ImageWidth(v1),-1024) ;Zeile korrigiert... Else vogel(i,1) = Rand(1024,2048) EndIf vogel(i,2) = Rand(0,500) Next Repeat TileImage hintergrund, 1, 1 For i = 0 To 20 ;--------------------------------------------------------------------------------------- ; Vogel fliegt von links nach rechts. Wenn er den rechten ; Rand erreicht hat wird seine Koordinate neu berechnetet ; und die Richtung umgekehrt. ;--------------------------------------------------------------------------------------- If vogel(i,0) = 1 vogel(i,1) = vogel(i,1) + 1 If vogel(i,1) > 1024 Then vogel(i,0) = 2 vogel(i,2) = Rand(0,500) EndIf DrawImage v1, vogel(i,1), vogel(i,2) ;------------------------------------------------------------------------------------------ ; Vogel fliegt von rechts nach links. Wenn er den linken Rand um seine ; eigene Breite überschritten hat wird seine Koordinate neu berechnetet ; und die Richtung umgekehrt. ;------------------------------------------------------------------------------------------ ElseIf vogel(i,0) = 2 vogel(i,1) = vogel(i,1) - 1 If vogel(i,1) < -ImageWidth(v1) Then vogel(i,0) = 1 vogel(i,2) = Rand(0,500) EndIf DrawImage v2, vogel(i,1), vogel(i,2) EndIf Next DrawImage kreuz, MouseX(), MouseY() Flip : Cls Until KeyHit(1) End Du must eben noch ein bisschen mit den Rand-Werten spielen (außer an vogel(i,0) ), damit die Lücken nicht zu groß sind. Viel Spaß noch damit |
||
- Zuletzt bearbeitet von d-bug am Sa, Jul 08, 2006 23:36, insgesamt einmal bearbeitet
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
vogel(i,1) = Rand(-ImageWidth(v1),1024)
die zeile raff ich noch nit! da zeigt der auch wieder ne meldung an das das bild nit existiert |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
oops, mach mal aus:
Code: [AUSKLAPPEN] vogel(i,1) = Rand(-ImageWidth(v1),1024)
ein: Code: [AUSKLAPPEN] vogel(i,1) = Rand(-ImageWidth(v1),-1024)
Also, die Zeile sagt nur der X-Koordinate, dass sie einen Zufallwert zwischen '0- der Breite des Images' und -1024 haben soll, damit die Vögel nicht innerhalb des Screens erscheinen. -1024 kann man ruhig anpassen, ist nur dazu gedacht, dass die Vögel nicht so dicht aufeinander hängen. '0- der Breite des Images', weil die Image-Koordinate immer oben links ist. Es sei denn du benutzt ql:Midhandle, was du übrigens mal mit dem Fadenkreuz machen solltest, denn es ist nicht mittig auf den Mauskoordinaten! Das das Bild nicht existiert, kann nicht sein, weil der code bei mir anstandslos alles geladen hat und ohne Fehlermeldung funktionierte. |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klappen tut es aber trotzdem nit:(
so sieht MEIN script zur zeit aus: Code: [AUSKLAPPEN] Graphics 1024,768,16,1
SetBuffer BackBuffer() Global v1 = LoadImage("vogel1.bmp") Global v2 = LoadImage("vogel2.bmp") Global kreuz = LoadImage("kreuz.bmp") Global hintergrund = LoadImage("hintergrund.bmp") Global shot = LoadSound("shot.wav") Dim vogel(20) Dim vogelx(20) Dim vogely(20) For n=1 To 20 vogel(n) = 3 Next Repeat Cls TileImage hintergrund, 1,1 ;setzen Rand1 = Rnd(1,50) If Rand1 = 1 Then For i=1 To 20 If vogel(i) = 3 Then i = 20 rand2 = Rnd(1,2) vogel(i) = rand2 If vogel(i) = 1 Then vogelx(i) = 1 If vogel(i) = 2 Then vogelx(i) = 1024 rand3 = Rnd(1,500) vogely(i) = 1 EndIf Next EndIf ;erneuern For z=1 To 20 Select vogel(z) Case 1: vogelx(z) = vogelx(z) + 1 Case 2: vogelx(z) = vogelx(z) - 1 Case 3: End Select Next ;ausgeben For f=1 To 20 Locate vogelx(f),vogely(f) Print"vogel" Next Flip Until KeyHit(1) End aber diese dummen vögel verschwinden immer wieder! |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weis, warum du die Bilder nicht reinladen kannst. das ist eindeutig ein jpeg-Format.
Mich anzulügen bringt dir hier garnichts. Egal, so musste ich's halt selber rausfinden. offne die Bilder mal mit Paint und speicher sie dann nochmal vernünftig als .bmp ab. So und jetzt zu dem anderen Problem: Die Vögel fliegen alle auf einem Haufen, weil du sie ALLE mit einer For-Schleife GLEICHZEITIG setzt. Deshalb Tauchen die Vögel alle gleichzeitg auf und verschwinden auch alle gleichzeitig wieder. Die Lögung Benutzt keine For-Schleife, sondern eine Zähl-Variable, die nach jedem setzen um eins erhöht wird, und wenn sie bei 20 angekommen ist, wieder auf 0 gesetzt wird. etwa so: Code: [AUSKLAPPEN] Graphics 1024,768,16,2
SetBuffer BackBuffer() Global v1 = LoadImage("vogel1.bmp") Global v2 = LoadImage("vogel2.bmp") Global kreuz = LoadImage("kreuz.bmp") Global hintergrund = LoadImage("hintergrund.bmp") Global shot = LoadSound("shot.wav") Dim vogel(20) Dim vogelx(20) Dim vogely(20) For n=1 To 20 vogel(n) = 3 Next Repeat Cls TileImage hintergrund, 1,1 ;setzen Rand1 = Rnd(1,50) If Rand1 = 1 Then rand2 = Rnd(1,2) vogel(nr) = rand2 If vogel(nr) = 1 Then vogelx(nr) = 1 If vogel(nr) = 2 Then vogelx(nr) = 1024 rand3 = Rnd(1,500) vogely(nr) = 1 EndIf If nr = 20 Then ;(maximaler Dim-wert) nr = 0 Else nr = nr + 1 EndIf ;erneuern For z=1 To 20 Select vogel(z) Case 1: vogelx(z) = vogelx(z) + 1 Case 2: vogelx(z) = vogelx(z) - 1 Case 3: End Select Next ;ausgeben For f=1 To 20 Select vogel(f) Case 1 DrawImage v1,vogelx(f),vogely(f) Case 2 DrawImage v2,vogelx(f),vogely(f) End Select Next Flip Cls Until KeyHit(1) End Was ich verändert hab: -Cls eingefügt, das hast du vergessen. -die Bilder Konvertiert -Die For-Scheife durch eine Zähl-Variable ersetzt (nr) -Zeile 25 und 26 gelöscht, weil ich nicht erkenne, wofür die gut sein sollen Das Funktioniert wirklich! Außerdem möchte ich dir noch den Tipp geben, keine .jpg-Datein in Spielen zu verwenden. Die sehen wirklich nicht schön aus. @D-bug: Das mit den 2dimensionalen Dims ist glaube ich zu schwierig für Noobs. |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
häää?
ich hab die doch als bmp abgespeichert! ich brauch nit zu lügen!!! aber trotzdem vielen dank! EDIT: hey du hast recht! das war echt nur als name bmp, aber war irgentwie als jpg gespeichert! ka warum! aber klappt jetzt (fast)! |
||
- Zuletzt bearbeitet von Kleiner satan am So, Jul 09, 2006 13:42, insgesamt einmal bearbeitet
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist jpeg, ganz ehrlich.
Nur weil die Endung .bmp lautet, heist das nicht, dass es auch eine Bitmap-Datei ist. Edit: ok ![]() |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Kabelbinder
Die zweidimensionalen Dims stammen von BlindGuy. Viel irritierender finde ich, dass 'Kleiner satan' nichts aus meinem Code gelernt hat, denn der funkionierte wenigsten... ![]() Naja, egal, ich weiß nun, dass ich wohl zu weit gedacht habe, als ich davon ausging er würde das verstehen und auch umsetzen können. Da frag ich mich doch, warum ich gestern nochmal, nach langer Zeit, B3D startete... ![]() cheers |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, ja. Die Noobs lassen einen immer im Stich. | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
hab ich wegen den dims was falsch gemacht ?? ![]() cya, BlindGuy |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
[quote="d-bug. Viel irritierender
finde ich, dass 'Kleiner satan' nichts aus meinem Code gelernt hat, denn der funkionierte wenigsten... ![]() cheers[/quote] ich hab nix draus gelenrt weil du ihn zu kompliziert gemacht hast! den den ich jetzt hab klappt super!!! und er ist vile verständlocher für noobs! |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
@BlindGuy
Nein, war wohl nur zu kompliziert, genau wie die Erweiterung die ich aus deinem Code ableitete... @Kleiner satan Naja, dann muss ich wohl mal darüber nachdenken, ob ich noch dazu geeignet bin im Noob-Kummerkasten Mod zu sein ![]() Mal im Ernst, ich hatte wirklich gedacht, dass du es verstanden hast, weil du keine Fragen dazu stelltest. Die eine die du stelltest hab ich dir ja auch beantwortet... cheers |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
So Jetztr hab ch ein neues Problem!!!
sieht jetzt so aus: Code: [AUSKLAPPEN] Graphics 1024,768,16,1 SetBuffer BackBuffer() Global pkt = 0 Global v1 = LoadImage("vogel1.bmp") Global v2 = LoadImage("vogel2.bmp") Global kreuz = LoadImage("kreuz.bmp") Global pat = LoadImage("patrone.bmp") Global hintergrund = LoadImage("hintergrund.bmp") Global shot = LoadSound("shot.wav") Global patrone = 5 Dim vogel(40) Dim vogelx(40) Dim vogely(40) For n=1 To 20 vogel(n) = 3 Next Repeat Cls TileImage hintergrund, 1,1 ;setzen Rand1 = Rnd(1,40) If Rand1 = 1 Then rand2 = Rnd(1,2) vogel(nr) = rand2 If vogel(nr) = 1 Then vogelx(nr) = 1 If vogel(nr) = 2 Then vogelx(nr) = 1024 rand3 = Rnd(1,500) vogely(nr) = rand3 EndIf If nr = 40 Then ;(maximaler Dim-wert) nr = 0 Else nr = nr + 1 EndIf ;erneuern For z=1 To 40 Select vogel(z) Case 1: vogelx(z) = vogelx(z) + 1 Case 2: vogelx(z) = vogelx(z) - 1 Case 3: End Select Next ;ausgeben For f=1 To 40 Select vogel(f) Case 1 DrawImage v1,vogelx(f),vogely(f) Case 2 DrawImage v2,vogelx(f),vogely(f) End Select Next ;kreuz x = MouseX() y = MouseY() DrawImage kreuz,x,y ;schießen If MouseHit(1) Then If patrone = 0 Then Else PlaySound(shot) patrone = patrone - 1 For s=1 To 40 If vogel(s) = 1 Or vogel(s) = 2 Then If ImagesCollide(kreuz, x, y,0, v1, vogelx(s), vogely(s), 0) Then vogel(s) = 3: pkt = pkt+20 If ImagesCollide(kreuz, x, y,0, v2, vogelx(s), vogely(s), 0) Then vogel(s) = 3 pkt = pkt+20 EndIf Next EndIf EndIf ;ende For e=1 To 40 If vogel(e) = 1 Then If vogelx(e) = 1024 Then vogel(e) = 3 EndIf If vogel(e) = 2 Then If vogelx(e) = 1 Then vogel(e) = 3 EndIf Next ;patrone If patrone = 5 Then DrawImage pat, 500, 500: DrawImage pat, 600, 500: DrawImage pat, 700, 500: DrawImage pat, 800, 500: DrawImage pat, 900, 500 If patrone = 4 Then DrawImage pat, 600, 500: DrawImage pat, 700, 500: DrawImage pat, 800, 500: DrawImage pat, 900, 500 If patrone = 3 Then DrawImage pat, 700, 500: DrawImage pat, 800, 500: DrawImage pat, 900, 500 If patrone = 2 Then DrawImage pat, 800, 500: DrawImage pat, 900, 500 If patrone = 1 Then DrawImage pat, 900, 500 If MouseHit(2) Then patrone = 5 pkt = pkt - 10 EndIf ;infos Locate 800,20 Print "punkte:" + pkt Flip Until KeyHit(1) End Ich hab unten den bereich infos hinzugefügt! da sollte eigentlich stehen wieviele punkte man hat! tut es aber nicht! kann mir einer helfen??? |
||
Brillux |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ersetze das
Zitat: ;infos Locate 800,20 Print "punkte:" + pkt durch das, dann müsste es gehen Code: [AUSKLAPPEN] ;infos Text 800,20,"punkte: " + pkt |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
häää???
das hatte ich zwar schon vorher versucht klappte aber nit! jetzzt klappts aber! danke! |
||
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hoi,
die hilfe sagt bei print: Code: [AUSKLAPPEN] Achtung! Der aktuelle Grafikbuffer wird ignoriert. Die Ausgabe erfolgt immer auf FRONTBUFFER. Ab BlitzPlus erfolgt die Eingabe in einer Konsole (DOS-Box).
deswegen ging das nicht ![]() l8er, psy |
||
![]() |
Kleiner satan |
![]() Antworten mit Zitat ![]() |
---|---|---|
oh...na dann | ||
Gehe zu Seite Zurück 1, 2, 3 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group