Spiel: Schütz den Bunker

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Raiden93

BeitragSo, Sep 19, 2010 8:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Der herr Midimaster hat die Types ganz am Anfang gesetzt kann man das nicht nach dem:
Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()
AppTitle "EndCore"
Global TimerFrame=CreateTimer(200)
HidePointer


machen?

BladeRunner

Moderator

BeitragSo, Sep 19, 2010 8:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wiederhole mich: probier es bitte selbst. Wenn Du nicht zuhause am Rechner bist, kannst Du das probieren ja nachholen wenn du es bist. Es geht hier ja um Stilfragen, also nichts was dich zurückwirft, und es ist unnötig das Portal damit zu belämmern.
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

Raiden93

BeitragSo, Sep 19, 2010 9:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich will doch nur Fragen 0o ich möchte nichts falsches lernen deswegen Frage ich Lieber es kann ja sein das Midimaster es einfach so gemacht hat weil es ihm gefällt aber vielleicht beeinträchtigt es auch mein Spiel und wenn ich dann etwas Falsches lerne mache ich es immer wieder Falsch und durch Fragen beuge ich solche Fehler vor.Und ich bin ja auch hier im Forum um Fragen zu können und aus euren Erfahrungen zu lernen.Deswegen finde ich es immer wieder ein wenig gemein das ich solche Nachrichten lese ist jetzt nichts gegen dich aber ich Lerne wirklich viel weil ich diese Materie wirklich Cool finde.Und da ist es wohl nicht zu viel einfach mal ein wenig Leute zu helfen die es noch nicht so viel können.

Ich habe jetzt ein wenig rum Experimentiert und habe mein Code von Dim´s in Types geändert nur jetzt will es nicht mehr so wirklich würde mich freuen wenn jemand mal mein Code Anschauen kann und mir sagt was ich Falsch gemacht habe.Z.b kann ich den OVAL nicht mehr mit meiner Maus steuern?

Mein Code:
Code: [AUSKLAPPEN]
;Project EndCore
;Anfang: 17.09.2010

Graphics 800,600,32,2
SetBuffer BackBuffer()
AppTitle "EndCore"
Global TimerFrame=CreateTimer(200)
HidePointer



;Laden von Daten
Global Spiel_Hintergrund_IMG = LoadImage ("GFX/SpielFeld.bmp")
Global Spiel_Mauer_IMG = LoadImage ("GFX/Mauer.bmp")
Global Spiel_Gegner1_IMG = LoadImage ("GFX/Gegner1.bmp")




;Variablen

Type GegnerTyp
    Field X#, Y#, Speed# ;Bewegung
   Field Schaden# ;Waffen
   Field Leben# ;Eigenschaften
End Type

Type SpielerTyp
   Field X#, Y#, Speed#
   Field Schaden#
   Field Leben#
   Field Breite#,Hohe#
End Type


Global Spieler.SpielerTyp
Global Gegner.GegnerTyp


Global Spiel_Modus = 2
Global Punkte = 0
Global Level = 1
Global Leben = 3



;Hauptschleife
Repeat
   Cls
   
   Spieler= New SpielerTyp
   Spieler\Breite = 3
   Spieler\Hohe = 3
   Spieler\X = MouseX()
   Spieler\Y = MouseY()
   
   If Spiel_Modus = 0
      Spiel_Spieler_Maus()
   ElseIf Spiel_Modus = 1
      Spiel_Spieler_Maus()
   ElseIf Spiel_Modus = 2
      DrawImage Spiel_Hintergrund_IMG,0,0
         DrawImage Spiel_Mauer_IMG,600,0
        Spiel_Gegner_Erstellen()
      Spiel_Spieler_Maus()
      Spiel_Status()
      Spiel_Lose()
      Spiel_Win()
   End If
   
   
   WaitTimer (TimerFrame)
   Flip 0
Until KeyHit (1)




;Funktionen
         

Function Spiel_Gegner_Erstellen()
   Select Level
      Case 1;Level 1
         Spieler=New SpielerTyp
   End Select
End Function

Function Spiel_Spieler_Maus()
   Color 255,0,0
   Oval Spieler\X,Spieler\Y,Spieler\Breite,Spieler\Hohe
End Function

Function Spiel_Status()
   Color 0,0,255
   Text 10,585,"Punkte: "+Punkte
   Text 150,585,"Leben: "+Leben
End Function

Function Spiel_Lose()
   If Leben =< 0
      Level = 0
      Text 400,585,"Verloren"
   End If
End Function

Function Spiel_Win()
   
End Function

BladeRunner

Moderator

BeitragSo, Sep 19, 2010 9:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist ja auch nicht so dass wir dir nicht helfen wollen, aber mal ganz im Ernst: Du fragst "Geht das" und postest den kompletten Code. Die Antwort würdest Du einfach dadurch erhalten dass Du diesen kompletten Code einmal ausführst. Wenn es läuft, geht es. Wenn nicht, wird was nicht stimmen, und DANN kann man ja gucken wo der Fehler liegt.
Ich helfe gern, wenn wirklich Hilfe nötig ist, aber ich sehe es nicht ein meine Zeit damit zu verbringen dir Fragen zu beantworten die du dir ohne weiteres selbst beantworten kannst.
Zu deinem aktuell geposteten Code:

Erstelle vor der Hauptschleife einmal einen Spieler, nicht laufend einen neuen. Dieser eine bleibt dann erhalten.
Die Mouseposition musst Du dann in der Hauptschleife immer neu setzen. In deinen Funktionen musst Du die Spielerinstanz als Parameter übergeben (Wenn es mehrere Spieler geben kann muss die Funktion ja wissen für welchen Spieler sie aufgerufen wird).
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

hazumu-kun

BeitragSo, Sep 19, 2010 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Pac-Man hat Folgendes geschrieben:
hazumu-kun hat Folgendes geschrieben:

P.s.: Man verzeihe mir mein goto in der for-each Schleife, mir fiel grade keine schönere Lösung ein, und ein goto für sinnvolle Zwecke schadet ja nicht.

Wieso? Geht das nicht mit Else? Smile


Ja, klar *facepalm*

@hubsi:
Tut mir Leid, ich war grade in Java als ich das schrieb, wird korrigiert.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Raiden93

BeitragSo, Sep 19, 2010 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab es jetzt soweit alles geschafft nur warum wird der Gegner nur 1 mal gezeigt?


Code: [AUSKLAPPEN]
Type GegnerTyp
    Field X#, Y#, Speed# ;Bewegung
   Field Schaden# ;Waffen
   Field Leben# ;Eigenschaften
End Type

Type SpielerTyp
   Field X#, Y#, Speed#
   Field Schaden#
   Field Leben#
   Field Breite#,Hohe#
End Type

Global Spieler.SpielerTyp
Global Gegner.GegnerTyp

Spieler=New SpielerTyp

Global Level = 1

For i=1 To 3
   Gegner=New GegnerTyp
   Gegner\X = Rand(-50,-550)
   Gegner\Y = Rand(50,550)
Next
;Hauptschleife

   Select Level
      Case 1;Level 1
         DrawImage Spiel_Gegner1_IMG,Gegner\X,Gegner\Y
         Gegner\X = Gegner\X +Rnd (0.5,3)
   End Select



Ich hab so ein leichten schimmer das die Gegner übereinander gezeichnet werden aber das müsste doch mit Rand weg gehen oder irre ich mich?

Xeres

Moderator

BeitragSo, Sep 19, 2010 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Gehst du denn dabei alle GegnerTyp-Types mit for...each durch?
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)

Raiden93

BeitragSo, Sep 19, 2010 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
nein muss ich also über all mit for each machen?

Xeres

Moderator

BeitragSo, Sep 19, 2010 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du solltest ein Tutorial durcharbeiten damit du selbst verstehst, was du machst. Im Forum gibt es außerdem 1 Mio. Beispiele - mindestens.
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)

Raiden93

BeitragSo, Sep 19, 2010 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute ich habe es geschafft Very Happy freu danke für eure Hilfreichen Tipps und Verbesserungen und ich dachte ich verstehe das nie habe es schon 100mal durch gekaut ^^

Ich werde es jetzt noch üben das ich auch nichts mehr falsch mache.

PacMani

BeitragSo, Sep 19, 2010 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie glaube ich ihm das jetzt nicht.

BladeRunner

Moderator

BeitragSo, Sep 19, 2010 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das soll hier nicht das Thema sein, Pac-Man.
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

Raiden93

BeitragMo, Sep 20, 2010 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe jetzt ein wenig am Spiel gebastelt und habe jetzt ein Problem mit der For schleife weil ich sie in meine Hauptschleife gepackt habe aber anders kann ich das For ja nicht als variable nutzen?
Jemand eine Idee?
Die Gegner Spawnen ins unendliche ist ja auch klar aber wenn ich es aus der Hauptschleife nehme ist GS nicht mehr änder bar

HAUPTSCHLEIFE
Code: [AUSKLAPPEN]

         For i=1 To GS
            Gegner=New GegnerTyp
            Gegner\X = Rand(-50,-550)
            Gegner\Y = Rand(50,550)
         Next

Progger93

BeitragMo, Sep 20, 2010 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehme mal an dass du auch nach dem Spielstart noch die Anzahl der Gegner verändern willst.
Dazu musst du einfach neue erzeugen, allerdings nur dann wenn du wirklich neue willst, denn ansonsten werden ja bei jedem Schleifendurchlauf X Gegner erzeugt:
Code: [AUSKLAPPEN]
If NeueGegner=True Then
    For i=0 to NeueGegnerAnzahl
        ;GegnerErzeugen
    Next
Endif
MfG Pascal
Win 7|T7250@2.0Ghz|3GB RAM|M8600GT

Raiden93

BeitragMo, Sep 20, 2010 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
So habe ich das ja auch gemacht aber sobald es dann True wird kommen 10000Gegner... Sad

Xeres

Moderator

BeitragMo, Sep 20, 2010 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Nachdenken -> Negative Rückkoppelung...
Code: [AUSKLAPPEN]
If NeueGegner=True Then
NeueGegner=False
    For i=0 to NeueGegnerAnzahl
        ;GegnerErzeugen
    Next
Endif
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)

Raiden93

BeitragMo, Sep 20, 2010 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok wieder was dazu gelernt^^

Raiden93

BeitragMo, Sep 20, 2010 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute hab mal wieder eine Frage mit einem Problem Wink

Ich habe jetzt ein Gegner und Playertyp und ich muss die ja mit Each ansprechen aber wie mache ich das wenn beide gleichzeitig angesprochen werden müssen?


Code: [AUSKLAPPEN]
   For Spieler.SpielerTyp=Each SpielerTyp      ;Maus Erstellen
      Spieler\Y = MouseY()
      Spieler\X = 710
      Color 255,0,0
      Oval Spieler\X,Spieler\Y,10,10
      
      ;Schuss Erstellen
      Oval Spieler\Schuss_X,Spieler\Schuss_Y,3,3
      Spieler\Schuss_X = Spieler\Schuss_X -3
      If MouseHit(1) ;Maus links
         Spieler=New SpielerTyp
         Spieler\Speed=Rnd(0.01,0.25)
         Spieler\Schuss_Y = MouseY() +3
         Spieler\Schuss_X = 710
      End If
      
;Kollision UND AB HIER IST DAS PROBLEMM Spieler wird mit Each angesprochen und was mit Gegner?
      If Spieler\Schuss_X => Gegner\X And Spieler\Schuss_X <= Gegner\X +50
         If Spieler\Schuss_Y => Gegner\Y And Spieler\Schuss_Y <= Gegner\Y -50
         End If
      End If
      
   Next

Xeres

Moderator

BeitragMo, Sep 20, 2010 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
In "Gegner" steht die letzte Instanz dieses Typs... Nach einer For...Each schleife wäre sie NULL... Wenn du alles-gegen-alles überprüfen willst, musst du wohl zwei verschachtelte For...Each Schleifen verwenden.
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)

Raiden93

BeitragMo, Sep 20, 2010 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm kannst du mir sagen was du mit verschachtelt meinst^^?

Und kann ich sag ich jetzt nochmal Hauptkategorien oder was das ist löschen sprich
Code: [AUSKLAPPEN]
      If Spieler\Schuss_X =< 100
         Delete Spieler\Schuss_X
      End If


Weil sonst müsste ich mir für den Schuss ein extra Type machen.:/

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group