space shooter
Übersicht

![]() |
zirriBetreff: space shooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute
Ich bin neu im Forum und bin dabei einen (einfachen) Space Shooter zu erstellen. Ich habe aber ein Problem immer wenn ich eine Rakete auf einen gegner feuer und sie trifft, passiert gar nichts und wenn ich mit einem Gegner kollidiere bin ich wieder im Blitz basic menü. D.H. kein Spielbildschirm mehr. ![]() AppTitle "Shooter" Graphics 640, 480 SetBuffer BackBuffer() Global monster = LoadImage("player2.bmp") Global player = LoadImage("spaceship3.bmp") Global schussbild = LoadImage("bullet.bmp") Global background = LoadImage("stars.bmp") Dim rakete(20,2) Global treffer = 0 Global hoehe = 200 Global schuss = 0 Global punkte = 0 Global pos_y = 10 Global sin_x = 0 Global x = 300 Global y = 300 Global bg = 0 Global i = 0 Repeat Cls hintergrund() steuerung() schiesen() gegner() kollisionen() spieler() punkte() Flip Until KeyDown(1) Function hintergrund() bg = bg + 1 If bg = 200 Then bg = 0 TileBlock background, 0, bg End Function Function steuerung() If KeyDown(205) Then x = x + 4 If KeyDown(203) Then x = x - 4 If KeyDown(200) Then y = y - 4 If KeyDown(208) Then y = y + 4 If x > 600 Then x = 600 If x < 0 Then x = 0 If y > 440 Then y = 440 If y < 0 Then y = 0 End Function Function schiesen() If KeyHit(57) Then schuss = schuss + 1 If schuss = 21 Then schuss = 1 rakete(schuss,0) = 1 rakete(schuss,1) = x + 8 rakete(schuss,2) = y - 16 EndIf For l = 1 To 20 If rakete(l,0) = 1 Then DrawImage schussbild, rakete(l,1), rakete(l,2) rakete(l,2) = rakete(l,2) - 5 EndIf Next End Function Function gegner() i = i + 1 pos_y = pos_y + 3 sin_x = Sin(i) * hoehe sin_x = sin_x + 300 DrawImage monster, sin_x, pos_y If pos_y > 641 Then punkte = punkte - 10 pos_y = 0 hoehe = Rnd(200,300) EndIf End Function Function kollisionen() For k = 1 To 20 If rakete(k,0) = 1 And ImagesOverlap(monster, sin_x, pos_y, schussbild, rakete(k,1), rakete(k,2)) Then rakete(k,0) = 0 treffer = treffer + 1 EndIf Next If treffer = 3 Then treffer = 0 punkte = punkte + 10 hoehe = Rnd(200,300) pos_y = -10 EndIf If ImagesOverlap(monster, sin_x, pos_y, player, x, y) Then End EndIf End Function Function spieler() DrawImage player, x, y End Function Function punkte() Text 400,10, "Du hast "+punkte+" Punkte" End Function |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, willkommen.
Dass die Gegner nicht verschwinden ist eigentlic klar, weil du ja gar nichts machst, dass sie verschwinden. Du setzt ihn dann am besten wieder zurück an die Startposition: Code: [AUSKLAPPEN] For k = 1 To 20 If rakete(k,0) = 1 And ImagesOverlap(monster, sin_x, pos_y, schussbild, rakete(k,1), rakete(k,2)) Then rakete(k,0) = 0 treffer = treffer + 1 Sin_x=0:Pos_y=10 EndIf Next Dass du wenn du in das Gegnerschiff reingeflogen bist, wieder auf der BB-Oberfläche bist, liegt daran, dass du das Programm mit end beendest. Du müsstes irgendwie ein Gameover Bildschirm anzeigen, und dann fragen, ob man noch einmal spielen möchte. Zu den Zielsuchenden Raketen: Such mal nach ATan2 und schei dir das Beispiel in der Onlinehilfe an. cu simi |
||
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi simi. Danke es funktioniert. Eine frage ich programmiere noch nicht lange . Weißt du oder jemand anders wie man so einen Game Over Bildschirm ins Spiel bringt? oder überhaupt ein Menü ![]() cu Tim |
||
![]() |
Bfox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wilkommen!
Bitte benutz die Forum-Suche! ![]() Es gibt schon genügent solche Fragen! z.B.: Wie erstelle ich ein Menü und viele mehr! Ich glaub du findest bestimmt was! |
||
Glauben ist Mangel an Wissen! |
![]() |
DivineDominion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm, habe da mal Nachsicht ![]() Wie du es in den Code einbindest ist jetzt deine Sache, dazu komm ich am Ende noch mal. Das Prinzip von einem Menü ist es ja, auf Eingabe vom User zu warten, egal in welcher Form. Wenn du ein hochauflösendes Spiel machst, bietet sich die Maus wohl an. Dann prüfst du eben, ob der Mauszeiger in bestimmten Bereichen ist. Diese Bereiche stellen dann die Knöpfe im Menü dar. Code: [AUSKLAPPEN] If MouseDown( 1 )
mx = MouseX() my = MouseY() If mx > 10 and mx < 20 if my > 10 and my < 20 end ;Beenden-Knopf z.B. :) endif endif endif Das meine ich mit BEreichen prüfen. Du checkst einfach ob die Maus zwischen zwei Korrdinaten ( P1(10,10) und P2(20,20) ) ist, wenn die Taste gedrückt wurde. Damit kannst du dann "Knöpfe" machen. Musst natürlich wissen wo die Menüpunkte stehen und wie breit & hoch sie sind, sonst macht das keinen Sinn ![]() Naja, bei einem Menü das mit den Pfeiltasten gesteuert wird bewegst du einen Cursor, ne Hand z.B. oder du lässt die Menüpunkte blinken, sobald man den hoch/runter Pfeil benutzt. Hier musst du rumprobieren ob du nach Nummern abfragst (0 = Neues Spiel, 1 = Laden, 2 = Ende oder so) oder die Position des Cursors checkst. Das ist aber dann nur Formsache. Naja und einbinden kannst du das ganze indem du eine globale variale benutzt, z.B. Spielmodus%, und der einen Wert für den Modus Menü gibst (z.b. 0, weil das beim erstellen von variablen der standartwert ist) und einen anderen für das Spiel zuweist (z.b. 1). Dann prüfst du eben den Modus und wenn er 0 ist zeigst du das Menü an. Wenn nicht das Spiel. Dabei ist es wichtig das du mit Funktionen umgehen kannst um deinen Code sinnvoll aufzuteilen, sonst hast du den ganzen Schmarrn in der Hauptschleife und blcikst nicht mehr durch ![]() |
||
christian.tietze@gmail.com - https://christiantietze.de
macOS |
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Entschuldigung wird nicht wieder vorkommen. danke jedenfals DivineDominion. ![]() |
||
![]() |
Bfox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meinte es nicht böse! Ich wollte dich nur darauf hinweißen!
Denn viele antworten auf solche Fragen nicht mehr weil es solche Fragen schon zu genüge gibt! Und oft hilft es dir mehr in einem anderem Thread nachzuschauen als selbst einen zu machen! |
||
Glauben ist Mangel an Wissen! |
-BB Noob- |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier sind ganz einfache Verfolgungsraketen:
If Schussx > Gegnerx then Schussx = Schussx - 3 If Schussx < Gegnerx then Schussx = Schussx + 3 (Passt nicht zu deinem Spiel,ist auch in keinem Dim feld, aber ich glaub das Prinzip is klar) mfg noob |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group