Schuss

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

jacky

Betreff: Schuss

BeitragFr, Nov 05, 2004 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich habe da eine (wahrscheinlich kleinliche) Frage:

Ich habe eine Spiel, wo ich mit einem Fadenkreuz, dass sich mit der Maus bewegt, auf einem Bild herumfahren kann. Nun möchte ich, dass wenn ich eine Taste drücke, dass auf dem Bild ein Loch erscheint (kein richtiges natürlich -.-)

Code:

DrawImage fadenkreuz,MouseX(),MouseY()

If MouseDown(1) Then
schuss
EndIf

Flip
Wend

Function schuss()
DrawImage loch,MouseX(),MouseY()
End Function

Wenn ich jetzt aber die Maustaste drücke, dann fährt das Loch mit dem Fadenkreuz mit.
Ich möchte aber dass es auf dem Punkt bleibt, wo ich geschossen habe.

thx for help
Aller Anfang ist schwer!!!
 

huii

BeitragFr, Nov 05, 2004 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch es so:

Code: [AUSKLAPPEN]

DrawImage fadenkreuz,MouseX(),MouseY()

If MouseDown(1) Then
schuss
EndIf

Flip
Wend

Function schuss()
x = MouseX()
y = MouseY()
DrawImage loch,x,y
End Function


MfG huii 8)
 

jacky

BeitragFr, Nov 05, 2004 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
funzt auch nich Crying or Very sad
Aller Anfang ist schwer!!!

BladeRunner

Moderator

BeitragFr, Nov 05, 2004 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstell eine Variable (oder Dim/type) um die Position des Schussloches zu speichern.
Danach in jedem Durchlauf der Mainloop das Loch an die gespeicherten Funktionen speichern.
Wenn du nur ein Loch brauchst: globale Variable (da sie sonst ja von der Funktion nicht verändert werden kann.
Bei mehreren Einschüssen bietet sich Dim (oder noch besser) Type an.
Dim ist immer global, daher ist der Zugriff leichter. Allerdings ist ein DimFeld statisch.
Types sind sehr variabel, aber du musst sie eben in einer for...each...schleife durchlaufen lassen (was ja nit schwer ist).

EDIT Ach ja, und Zeichne dein Fadenkreuz nach den Löchern, sonst wird es überpinselt...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
  • Zuletzt bearbeitet von BladeRunner am Fr, Nov 05, 2004 22:27, insgesamt einmal bearbeitet
 

David

BeitragFr, Nov 05, 2004 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Du nimmst einen Typ und erstellst pro Schuss ein neues Objekt. Bei jedem Renderdurchlauf zeichnest du jedes "Einschussloch". Nach einiger Zeit zerstörst du die Löcher am besten wieder...

Edit: 2 l8 :/

grüße
http://bl4ckd0g.funpic.de
 

jacky

BeitragFr, Nov 05, 2004 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
@BladeRunner:
Wie soll ich die Position in einer Variable speichern?
Ich meine, mit x=MouseX() geht's ja nich, weil sich ja dann die Variable auch immer wieder ändert.

Wenn möglich mit Pseudocode, wäre nett
Aller Anfang ist schwer!!!

BladeRunner

Moderator

BeitragFr, Nov 05, 2004 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Code gibts keinen. Denk einfach mal nach. Wenn du wirklich nur ein Einschußloch brauchst, kannst du ja auch noch ne 3 Var einführen, welche festlegt ob schon geschossen wurde.
Aber am Besten ists wie es David gesagt hat. Erstell immer ein neues schuss-objekt und lass die alle Pinseln (Schleife). Dann könntest du auch ne "Existenzdauer" festlegen.

Es gibt auf www.blitzbase.de ein sehr gutes Type-tut.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

David

BeitragFr, Nov 05, 2004 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Pseudocode:
Code: [AUSKLAPPEN]

Grafikmodus setzen

typ schuss
  imageID
  x, y
  alter

lade texturen

hauptschleife
  zeichne grafiken
  benutzereingabe
  decals updaten
 
  zeichne mauscursor
ende hauptschleife

benutzereingabe
  Neuen schuss erstellen

decals updaten
  for each...
    Zeichne Dekal an x, y

    Wenn alter > x dann zerstöre decal



grüße
http://bl4ckd0g.funpic.de

eXceptION

BeitragSa, Nov 06, 2004 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst auch die löcher auf ein grosses bild zeichnen...

dann zeichnest du das bild transparent zu den bildschirm kurz vor das fadenkreuz...

vorteile sind beispielsweise das du unendlich viele löcher haben darfst, ohne dass der geschwindigkeit sich verändert... jetzt brauchst du sie auch nicht mehr zu zerstören... ausserdem brauchst du nicht mehr die verschiedene löcher in variablen zu speicheren...
Norweger...

Spreche aber verdammt gut 8086

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group