Verstehensproblem Schießen
Übersicht

![]() |
FreemanBetreff: Verstehensproblem Schießen |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, also ich habe ein Verstehensproblem beim schießen. Es ist ja so, bei jedem Code der mir unter die nase kommt nutzen die Coder immer nur einen Sprite für das Schießen, diese werden dann anhand von Variablen bewegt, das is mir alles noch klar. Aber sie sind in der Lage mit diesem einem Sprite so viele Schüsse abzufeuern wie sie wollen ![]() |
||
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie handhabst du es denn bei einem Schuss?
Richtig, der hat mehrere Variablen (etwa x,y,speed) und nach denen ändert sich die Position. Da es etwas mühsam wäre x2,y2,speed2, 3,4, ... per Hand zu erstellen gibt es eine Wundererfindung die sich Array nennt, damit hast du praktisch eine variable, die aber mehrere Zähler hat. Alternativ gibts auch noch Types, für Anfänger sind die aber erstmal schwerer zu verstehen. Und die sind auch kein Muss um vorranzukommen ![]() Schau dir also mal den Befehl Dim (-> blitzbase.de) und verschiedenste Beispiele an, einfache Sternenfelder z.B. |
||
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, thx | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zum einzeichnen der Gfx verweist du ja nur auf das Handle der Bilder- und das kannst du kopieren sooft du willst (es ist also nimmer so wie beim C64 z.B. wo man nur 8 sprites hatte).
EDIT: Sehe grade das in FAQs von Jok3 ein Tut zum thema ist... schau dir das doch mal an. Bei Fragen versuch ich gern zu helfen. |
||
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 |
Serge |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Man muss den Sprite nicht vervielfachen. Man muss lediglich den selben Sprite mehrmals auf dem Bildschirm "zeichnen".
Und jeder Schuss braucht seine eigene Variablen dann (wofür man am besten gleich ein Array nimmt wie Triton sagte) Kann es sein dass du davor mit Dark Basic schonmal einweng was versucht hast? Denn dort wurden Sprites etwas anders (recht komisch) gehandhabt. |
||
http://www.dark-matter-soft.de |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achja, hier mal ein kleiner hinweiß, das es nicht zu verständigungs Problemen kommt,
Sprites sind 3D --> können nur einmal gezeichnet werden. Images sind 2D --> können mehrmals gezeichnet werden z.B. Code: [AUSKLAPPEN] Graphics 640,480.0.2
sebuffer backbuffer() schuss=Loadimage("schuss.bmp") repeat Drawimage schuss,100,100 Drawimage schuss,0,100 Drawimage schuss,0,50 Drawimage schuss,300,200 flip until keyhit(1) |
||
between angels and insects |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi
ich habe mich mal an dieser Sternenkarte versucht, das war ganz einfach, jetzt hab ich das ganze mal mit nem Schuss gemacht, das sah dann so aus : Code: [AUSKLAPPEN] screenbreite = 640
Graphics screenbreite,480 SetBuffer BackBuffer() bullet = LoadImage("ammo.png") Dim bulletX(10) Dim bulletY(10) Repeat Cls Text 100,100,Str(schuss) If KeyHit(57) schuss = schuss + 1 If schuss >=10 schuss =0 EndIf EndIf If schuss > 0 For i = 0 To schuss If bulletx(i) < screenbreite + 5 And bulletx(i) >= 0 bulletx(i) = bulletx(i) + 5 Else bulletx(i) =-8 EndIf Next For i = 0 To schuss DrawImage bullet , bulletx(i),bullety(i) Next EndIf Flip Until KeyDown(1) so, ich kann jetzt schön schießenm, allerdings nur bis 10, weiter nich, dann werden die sprites nich mehr angezeigt.... |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, dass liegt daran dass du das Array nur 10 Felder hat
Code: [AUSKLAPPEN] Dim bulletX(10) Dim bulletY(10) Ich würds halt doch mit Types machen, ist nicht so schwer Code: [AUSKLAPPEN] Graphics 640,480,0,1 SetBuffer BackBuffer() Type Schuss ;ein Type-Feld für den Schuss erstellen field x ;x-Kordinate des Schusses field y ;y-Kordinate des Schusses end Type While not(keyHit(1)) if KeyHit(57) then ;Wenn Leertaste gedrückt ... s.schuss = new Schuss ;Neuer schuss erstellen s\x=50 ;X und Y Kordinate von diesem schuss auf 50 stellen s\y=50 end if For s.schuss = each schuss ;Alle schüsse durchgehen s\x = s\x+1 ;Die x Kordinate des Schusses erhöhen Oval s\x,s\y,5,5,1 ;Schuss zeichnen if s\x > 640 then Delete s.schuss ;Wenn der Schuss auserhalb des Bildschirms ; ist können wir ihn löschen next flip wend end am besten schaus du dir dieses sehr ausführliche Tutorial an http://www.blitzbase.de/tutorials/shadow_1.htm cu simi |
||
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke erstmal für die neue Idee, allerdings, wollt ich es so machen wie ich mir das ausgedacht hab, also mit dim . Weil ich kann ja nicht immer was anderes anfangen..., deshalb bitte ich euch wirklich das ihr mir in der Sache helft...
Bitte |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm... simi hat dir die antwort im prinzip schon gegeben- erweitere Dein Dim-Feld (und alle relevanten Operationen, und du kannst mehr Schüsse darstellen. | ||
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 |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hatte es ja schonmal so, das man ebn mehr schießen kann, aba ich dachte mir, es wird doch ne möglichkeit geben ne Schleife zu machen. Gut, ok, dann mach ich es so.
Danke ^^ |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Grübl...
ich glaub ich versteh jetzt was du meinst. Da kann ich auf renés Buch verweisen, er macht genau das was du möchtest. Du hast ja gesagt das du es bestellt hast, ich glaub da isses sehr gut erklärt. Ansonsten versuch ich gern zu helfen (wenn ich auch n bissl im streß bin derzeit). |
||
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 |
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also zu den dim feldern:
du weißt ja, das eine bestimmte anzahl von schüssen nur auf den bildschirm passt oder? also ich würde eine for next schleife anlegen, nach dem folgenden prinzip: [edit] ich bekomm das jetzt nich erklärt... |
||
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann versuchs einfach zu erklären, mehr als falsch sein kann es ja nich ^^ | ||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok also:
Code: [AUSKLAPPEN] dim schuss(x,y) for I = 1 to höchst_anzahl ;wie viele schüsse nachher der user höchstens schießen darf/kann. ;höchst_anzahl kannste auch so verändern, das du verschiedene modis hast, ;wie zb. maschinengewehr oder schrotflinte oder was weiß ich :P if schuss = true then schuss(x,y) = schuss(x+1,y) drawimage schuss_pic, schuss(x,y), schuss(x,y) endif delay 300 ; ich weiß das mich jetzt alle lünchen werden, aber ich weiß zurzeit keine andere lösung...(vielleicht mit wait?) ;nimm auf gar keinen fall dieses delay mit in dein programm sondern ne andere warte funktion ;nur mit fällt keine ein im Moment. ;Dieses delay hält dein ganzes programm an, was ja nicht sinnvoll ist, ;da ja das raumschiff auch bewegt werden soll und das durch das delay ruckeln wird ;soll das raumschiff schneller schießen, musst du auch die zeit ändern, da ja sonst das ganze nichts bringt. ;mit dem +1 kannste noch ein bischen rumexperimentieren genauso, wie mit dem delay... ;das soll nur ein code beispiel sein und keine komplett lösung... next ich hoffe, das ich dir geholfen habe... |
||
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
also erstma vielen herzlichen dank an dich dubitat . Aber is das nicht vom Sinn her der selbe Code wie meiner? nur ebn ohne Begrenzung und so? Weil bei dir gibs doch auch ne Begrenzung an Schuss. Ich habe das ganze jetzt so gemacht das ich nen Wert festgelegt habe und mit dem bastle ich jetzt. Achso ich habe nochne Frage bezüglich meiner Dim Werte:
Ist es möglich diese Werte zu verändern, also ich mein wenn mein wenn man zum Beispiel schreibt: Code: [AUSKLAPPEN] dim BulletX(200) bla,bla,bla wenn dieser Bulletx Wert bei 200 liegt dann dürfte es ja nichmehr weiter gehn, das man dann einfach den Wert um 199 subtrahiert , so das man dann wieder bei 1 steht. Ist sowas möglich? Danke an alle , Freeman |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group