Kanonenschuss funktioniert nicht richtig

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dice of Darkness

Betreff: Kanonenschuss funktioniert nicht richtig

BeitragDo, Feb 14, 2008 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen!

Ich muss gleich vornweg sagen, dass ich quasi ein totaler Noob bin, also so gut wie gar keine Kenntnisse von Blitz Basic habe. Das heißt nicht, dass ich die Befehle nicht kennen würde, sondern dass ich noch nie ein komplettes Spiel programmiert habe...

Ok, das Problem ist folgendes: Ich wollte eine Art Schiffe versenken machen, mit verschiedenen Schiffen, die man abschießen muss etc. Ich habe bis jetzt nur ein Hintergrundbild, eine Kanone und ein Schiff. Die Kanone ist ganz unten aufm Bildschirm in der Mitte, und wenn man auf Leertaste drückt, kommt aus der Spitze eine Kugel heraus, die geradeaus schießt. Das Schiff fährt derweil über den Bildschirm.

Hier ist der Code:

Code: [AUSKLAPPEN]
Graphics 1024,768,32,1
timer = CreateTimer (30)

SetBuffer BackBuffer ()

Global Tile = LoadImage ("Ship_r_gr.bmp"); Schiff
MaskImage Tile, 255, 0, 255
Global Cannon = LoadImage ("cannon.bmp"); Kanone
MaskImage Cannon, 255, 0, 255
Global Ball = LoadImage ("ball.bmp"); Kugel
MaskImage Ball, 255, 0, 255

Global Back = LoadImage ("water.jpg"); Hintergrund

Global player_pos_x# = -100; Startposition Schiff (-100, damit es von links erscheint)
Global player_pos_y# = 400

Global ball_x = 540; Position der Kugel
Global ball_y = 700

Repeat
Cls
WaitTimer (timer)
DrawImage Back, 0, 0; Hintergrund zeichnen
DrawImage Cannon, 512, 600; Kanone zeichnen
DrawImage Tile, player_pos_x#, player_pos_y#; Schiff zeichnen
player_pos_x# = player_pos_x# +3.3; Schiff fährt über den Bildschirm

If KeyHit (57) Then DrawImage Ball, ball_x, ball_y; Bei Leertaste soll die Kugel erscheinen
ball_y = ball_y - 2; Kugel bewegt sich vorwärts

Flip
Until KeyHit (1)

End


Probleme sind dabei: Mit KeyHit erscheint die Kugel einmal ganz kurz, dann ist sie wieder weg. Wenn man wieder auf die Leertaste drückt, ist sie wieder kurz da und wieder weg.
Außerdem gibt es ein Problem, wenn das Schiff sich in der Nähe der Kanone aufhält: Dann wird die Kugel an einer ganz anderen Stelle (irgendwo über dem Schiff) dargestellt. Shocked

Meine Frage wäre also: Wie kriege ich die Probleme gelöst, dass die Kugel nicht gleich wieder verschwindet, sondern auf dem Bildschirm bleibt, und wie kann man die Position der Kugel "festsetzen", ohne dass sie ständig woanders erscheint?

Vielen Dank schon im Voraus,

mfg Dice of Darkness

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Feb 14, 2008 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Du mußt den Schuss aktivieren damit dieser in jedem Schleifendurchgang gezeichnet wird
etwa so
Code: [AUSKLAPPEN]
If KeyHit (57) Then AktiverBall = 1; Bei Leertaste soll die Kugel erscheinen
If AktiverBall = 1 Then
    DrawImage Ball, ball_x, ball_y
    ball_y = ball_y - 2; Kugel bewegt sich vorwärts
End If
[BB2D | BB3D | BB+]

Xeres

Moderator

BeitragDo, Feb 14, 2008 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Keyhit ist bei dir nur 1/30 Sekunde lang True, bzw. das bild ist nur den Frame sichtbar wo man die taste auch drückt. Danach wird das Bild wieder nicht eingezeichnet.
Und die Kugel bewegt sich auch immer vorwärts, egal was ist.
Ich empfehle ein Type-Schuss-Tutorial...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Dice of Darkness

BeitragDo, Feb 14, 2008 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Super danke! Jetzt funktionierts, muss nur die Koordinaten von der Kugel noch mal überarbeiten.

thx!
 

Schoasch

BeitragFr, Feb 15, 2008 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres, da kann ich dir nicht zustimmen. (Ich bin auch kein Profie, eher auch ein Noob)
Wenn der die Taste einmal drückt, ist die Variable AktiverBall immer 1! (Sie wird ja nicht zurückgesetzt)
Und deshalbt wird die abfrage If AktiverBall = 1 Then ... auch immer erfüllt
und das Bild angezeigt =)
Wenn ich mich täusche---> sry für den Post
Mfg

Xeres

Moderator

BeitragFr, Feb 15, 2008 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Würde ich mich auf Rallimens Code beziehen, aber ich bezog mich auf Dice of Darkness' Anfangspost...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Schoasch

BeitragSa, Feb 16, 2008 7:46
Antworten mit Zitat
Benutzer-Profile anzeigen
achso sry^^...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group