Types gehen nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

pepetigo

Betreff: Types gehen nicht

BeitragDi, Okt 16, 2007 7:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese beiden funtionen ich glaube diie Function: gegnerbewegen(), functioniert nicht.
Könnt ihr mir helfen???
thx

Code: [AUSKLAPPEN]

Function neuergegner()
gegner.rot = New rot
gegner\x = Rnd(1, 620)
gegner\y = 0
gegner\speed = Rnd(1,3)
End Function





Function gegnerbewegen()

For gegner.rot = Each rot


gegner\y = gegner\y + (1 * gegner\speed)


; Helicopter zeichnen.
DrawImage gegner_1, gegner\x, gegner\y



; Wenn Heli am unteren Rand ist, wird er gelöscht.
If gegner\y < 480 Then
gegnerloeschen = 1
EndIf


If gegnerloeschen = 1 Then
Delete gegner.rot
gegnerloeschen = 0
EndIf


Next






End Function

 

pepetigo

BeitragDi, Okt 16, 2007 8:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir ist eingefallen das es auch an der Einbindung in das Spiel liegen kann.
Code: [AUSKLAPPEN]


repeat
   ;HAUPTSCHLEIFE
   Repeat
   SeedRnd MilliSecs
   t = Rnd(1, 3)
   If t = 3 Then neuergegner()

   ;funktionen
      star() ;Hintergrund
      collide() ; functioniert noch nicht
      gegnerbewegen()
until Keyhit(1)

d-bug

BeitragDi, Okt 16, 2007 9:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo ist denn das Type? Sehe da nur die Aufrufe...

Könntest du evtl. demnächst den Edit Button (oben rechts, der mit dem Schraubenschlüssel) benutzen? Doppelposts sind nicht erwünscht.

(Verdammter IE6, wieso kann ich mit dem Ding keine Grafikadresse kopieren >:O)


cheers
 

pepetigo

BeitragDi, Okt 16, 2007 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok
Das mit dem qype ist geklärt war das größer kleiner Zeichen beim löschen.
Jetzt zur Collision:
thx

Code: [AUSKLAPPEN]

If Imagescollide(spieler_1, Player_pos_x, 380, 0, gegner_1,we´ß ich nicht was ich reinschreiben soll, wenn ich schreibe:gegner\x schreibt er:Variable must be a Type)
 

Dreamora

BeitragDi, Okt 16, 2007 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Da steht doch schon das Problem

gegner muss von irgend einem type sein also bei der deklaration gegner.TypeName = new TypeName und dieser Type muss das Field haben auf das du versuchst zuzugreifen.

Bitte mach erst die grundlagen Tutorials die Types nutzen um die Grundlagen zu verstehen bevor du es versuchst zu verwenden. Das macht es nur komplizierter zu verstehen.

Erst verstehen wie es funktioniert.
Dann verstehen wie man es einsetzen kann.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

pepetigo

BeitragDi, Okt 16, 2007 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir ist der Type:
Code: [AUSKLAPPEN]

Type rot
Field x
Field y
Field speed
End Type

Was soll ich den Einsetzen bei der Collision???
Ich weiß nicht mehr weiter Sad
thx
 

Lador

BeitragMi, Okt 17, 2007 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, du solltest vielleicht mal deine Variable (willst du jetzt gegner_1 oder gegner als Variable?) global definieren. Und überhaupt als Type.

Code: [AUSKLAPPEN]
Global Gegner.rot = New rot


Wenn du geringe Englisch-Kenntnisse besitzt, hättest du das auch von allein lösen können. Und auf Dreamora hören, also les doch ein Buch, Tutorial etc. Dann frag im BlitzForum, wenn du nichts in der Forensuche findest.

MFG Lador

The_Nici

BeitragMi, Okt 17, 2007 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
@pepetigo: Naja, dein Type hat gar kein Bild, also kannst du schlecht die Kollision überprüfen.

Code: [AUSKLAPPEN]

;Type für den Gegner
Type gegner
   Field img ;Bild
   Field x ;X-Pos
   Field y ;Y-Pos
   Field speed ;Geschwindigkeit
End Type

Graphics 640,480,32,1 ;Grafikmodus
Setbuffer Backbuffer() ;Backbuffer, d.h. das Bild wird im Hintergrund gezeichnet und mit Flip gezeigt
g1.gegner=new gegner ;Neuer Gegner erstellen
g1\img=Createimage(100,100) ;Bild mit den Massen 100,100 erstellen
Setbuffer Imagebuffer(g1\img) ;In den Imagebuffer wechseln, um aufs Bild zu zeichnen
Color 255,0,0 Oval 0,0,100,100,1 ;Rotes, gefülltes Oval ins Bild zeichnen. damit wir etwas sehen^^
Setbuffer Backbuffer() ;Wieder in den Backbuffer wechseln!
g1\x=0 ;X-Pos
g1\y=0 ;Y-Pos
g1\speed=10 ;Geschwindigkeit

player=createimage(100,100) ;Player erstellen
Setbuffer Imagebuffer(player) ;In den Imagebuffer des Players wechseln
Color 0,255,0 Oval 0,0,100,100,1 ;Grünes, gefülltes Oval zeichnen, damit wir den Player sehen!
Setbuffer Backbuffer() ;Guten Tag, Herr Backbuffer!

While not KeyDown(1) ;Während nicht Tasterunter Escape
   mx=Mousex() ;Mauskoordinaten als Variable speichern, könnten wir uns auch schenken, ich machs    
   my=Mousey() ;aber immer so, weils bequemer ist ;)

   If g1\x>mx then ;Wenn g1\x grösser ist als die mausXkoordinate, dann bewegt
      g1\x=g1\x-g1\speed ;er sich auf die Maus zu...
   Else ;Sonst
      g1\x=g1\x+g1\speed ;Bewegt er sich auch auf dieMaus zu, nur halt von der anderen Richtung :D
   EndIf
;Dat gleiche mit Y
   If g1\y>my then
      g1\y=g1\y-g1\speed
   Else
      g1\y=g1\y+g1\speed
   EndIf

   Drawimage g1\img, g1\x, g1\y ;Gegnerbild zeichnen
   Drawimage player, mx, my ;Spielerbild zeichnen

   If Imagescollide(g1\img, g1\x, g1\y,0,spieler, mx,my,0) Then ;wenn  der Gegner mit dem Spieler             ;kollidiert...
      RuntimeError("TOT!!HAHAHA!!TOOOOOHOOOOT!!") ;Mit dieser Fehlermeldung beenden.
   EndIf
   Flip ;Backbuffer Bild zeichnen
   Cls ;Bildschirm löschen
Wend ;Ende der While Schleife
End ;Ende

      


Aus dem Kopf aufgeschrieben. Funktionsfähig! Bis auf einen Fehler, den darfst du beheben.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group