ProfilProfil
 Registrieren
 Login
Bild der WocheBild der Woche

(von Backslider)
Kommentare (0)
****

Weitere
User onlineBenutzer online
Gäste online: 9
Mitglieder online: cheater
Registrierte Mitglieder: 2116
Neustes Mitglied: onkel_keks

Bild auf Knopfdruck malen

Gehe zu Seite 1, 2, 3  Weiter
Neue Antwort erstellen
 

 

Autor Nachricht
 
 
Scantraxx
Member


Anmeldedatum: 18.06.2012
Beiträge: 11

Antworten mit Zitat
BeitragVerfasst am: 08.07.2012, 16:51    Titel: Bild auf Knopfdruck malen

Hey!
Und zwar hab ich folgendes Problem.

Wir programmieren zurzeit Bomberman mit C#. Und irgendwie möchte es nicht funktionieren das er die Bombe malt wenn wir Enter drücken.

Unsere Idee war es so zu machen

Code:

 if (player.IsKeyDown(Keys.Enter))
                    {

                        spriteBatch.Begin();
                        spriteBatch.Draw(Bombe1, player1_rect, Color.White);
                        spriteBatch.End();

                    }




Ich danke schonmal für Lösungen Smile


Vllt. hat auch einer noch ne Idee wie man es dann macht wenn die Bombe explodiert das er in allen Richtungen die Feueranimation malt, nur da nich wo eine Wand oder sowas ist.


Ciao Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Philipp
Neuling


Anmeldedatum: 31.03.2012
Beiträge: 6
Wohnort: Bayern

Antworten mit Zitat
BeitragVerfasst am: 08.07.2012, 18:03    Titel:

HI,

so wie dein Code jetzt dasteht wird deine Bombe nur gezeichnet, wenn du die Enter-Taste gedrückt hältst.
Knüpf deine if-Abfrage nicht an den Tastendruck sondern an einen boolean. In der Update-Methode kannst du dann überprüfen ob die Taste gedrückt wurde und dann dementsprechend deine boolean setzen.

philipp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer


Scantraxx
Member


Anmeldedatum: 18.06.2012
Beiträge: 11

Antworten mit Zitat
BeitragVerfasst am: 08.07.2012, 18:16    Titel:

Naja also er zeichnet garnich zurzeit mit dem Code den ich habe. Das mit Bool, also es klappt auch nich so ganz gerade oder ich mach es falsch^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Philipp
Neuling


Anmeldedatum: 31.03.2012
Beiträge: 6
Wohnort: Bayern

Antworten mit Zitat
BeitragVerfasst am: 08.07.2012, 18:52    Titel:

Achso,

mm also an deinem Draw-aufruf an sich kann ich jetzt nicht erkennen dass da was falsch wäre. Vielleicht hat dein Rectangle die breite 0 Wink
Du müsstest vlt. noch mehr code posten,weil mit dem bisherigen alleine kann ich dir leider nicht weiterhelfen, sry.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer


FirstChoice
Member


Anmeldedatum: 01.06.2012
Beiträge: 200

Antworten mit Zitat
BeitragVerfasst am: 08.07.2012, 19:17    Titel:

Wenn das oben kein pseudocoe war, dann hast du definitiv die falsche Herangehensweise. Ich bin mal so freundlich, das ganze Ding durchzuprogrammieren. Code nicht getestet.
Code:

//Bomb.cs
//usings...
//die restliche Funktionalität musst du selbst implementieren
public class Bomb
{
     public Vector2 Position; //position der bombe
     public Texture2D Texture; //textur der bombe (animation musste selber machen)
     public Bomb(Vector2 pos, Texture2D texture) //konstruktor
     {
          Position = pos; //position kriegt den wert des parameters
          Texture = texture; //texture auch
     }
     public void Draw(SpriteBatch batch)
     {
          batch.Draw(Texture, Position, Color.White); //normales zeichnen...
     }
}
//Player.cs
public class Player
{
     public Vector2 Position; //position
     public Texture2D Texture; //textur
     public Player(Vector2 pos, Texture2D texture) //konstruktor
     {
          Position = pos; //position kriegt den parameter-wert
          Texture = texture; //und texture auch
     }
     public void Update()
     {
          //billige implementierung von WASD-steuerung
          KeyboardState kbState = Keyboard.GetState();
          if(kbState.IsKeyDown(Keys.W))
               Position.Y++;
          if(kbState.IsKeyDown(Keys.A))
               Position.X--;
          if(kbState.IsKeyDown(Keys.S))
               Position.Y--;
          if(kbState.IsKeyDown(Keys.D))
               Position.X++;
     }
     public void Draw(SpriteBatch batch)
     {
          batch.Draw(Texture, Position, Color.White); //normales zeichnen (rectangle wäre hier sinnlos)
     }
}
//Game1.cs
//alle nötigen variablen: "bombenliste", der spieler und die texturen
public List<Bomb> activeBombs;
public Player player;
public Texture2D playerTexture;
public Texture2D bombTexture;

//LoadContent(), sollte sich von allein erklären
playerTexture = Content.Load<Texture2D>("myPlayer");
bombTexture = Content.Load<Texture2D>("myBomb");
activeBombs = new List<Bomb>();
player = new Player(new Vector2(), playerTexture);

//Update()
player.Update(); //als erstes updaten wir den spieler
if(Keyboard.GetState().IsKeyDown(Keys.Space)) //hier legen wir keine variable für Keyboard.GetState() an, loht sich nicht
     activeBombs.Add(new Bomb(player.Position, bombTexture)); //bombe an der position des spielers setzen

//Draw(), ebenfalls selbsterklärend
spriteBatch.Begin();
player.Draw(spriteBatch);
foreach(Bomb b in activeBombs)
     b.Draw(spriteBatch);

Puh, ne Menge getippt Smile Ich hoffe das hilft dir. Genügend kommentiert ist es ja.
Wenn das Spiel noch viel größer wird, solltest du eine Controller-Klasse einführen, die alle Texturen, Listen, Variablen und Methoden beinhaltet.
mfg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


simsmaster
Member


Anmeldedatum: 05.08.2009
Beiträge: 1631
Wohnort: Langenhagen

Antworten mit Zitat
BeitragVerfasst am: 08.07.2012, 19:43    Titel:

Dein Code oben wird nicht funktionieren, weil deine normale Draw Methode mit einem Clear() beginnt Wink
_________________
Mein Blog - XNA FAQ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


FirstChoice
Member


Anmeldedatum: 01.06.2012
Beiträge: 200

Antworten mit Zitat
BeitragVerfasst am: 08.07.2012, 22:29    Titel:

Wen meinst du jetzt? Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Chrisor
Member


Anmeldedatum: 07.07.2012
Beiträge: 11

Antworten mit Zitat
BeitragVerfasst am: 09.07.2012, 17:03    Titel:

Wenn du deine Bombe im Update() malst wird sie am Anfang von Draw() gecleared und ist nicht mehr zu sehen, du MUSST sie im Draw() zeichnen!

MfG chris
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


FirstChoice
Member


Anmeldedatum: 01.06.2012
Beiträge: 200

Antworten mit Zitat
BeitragVerfasst am: 09.07.2012, 19:05    Titel:

machs einfach so wie ich geschrieben habe Wink dürfte wohl auch ein guter ansatz für den rest sein. alles in der Game1 a la
Code:

//Pseudocode
playerPosition
enemyPosition1
enemyPosition2
enemyPosition3
coinPosition1
coinPosition2
coinPosition3
coinPosition4

usw. zu speichern ist ganz schlecht.
mfg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Scantraxx
Member


Anmeldedatum: 18.06.2012
Beiträge: 11

Antworten mit Zitat
BeitragVerfasst am: 10.07.2012, 17:27    Titel:

Es stimmt der Code funktioniert leider nicht Sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


fire
Member


Anmeldedatum: 26.07.2011
Beiträge: 143

Antworten mit Zitat
BeitragVerfasst am: 10.07.2012, 17:31    Titel:

was funktioniert denn genau nicht?
_________________
http://www.mediahdcenter.de
Kostenloses und gutes Farbkorrekturprogramm auf meiner Webseite
Ich suche noch nach einem Namen für dieses Programm.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


FirstChoice
Member


Anmeldedatum: 01.06.2012
Beiträge: 200

Antworten mit Zitat
BeitragVerfasst am: 10.07.2012, 17:54    Titel:

@Scantraxx
Du solltest ihn auch nicht kopieren und einfügen. vielleicht habe ich irgendwo was vergessen.. kann sein. aber der ansatz ist richtig. deswegen meinte ich ja auch "code nicht getestet".
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Scantraxx
Member


Anmeldedatum: 18.06.2012
Beiträge: 11

Antworten mit Zitat
BeitragVerfasst am: 10.07.2012, 17:55    Titel:

Irgendwas mit ner erweiterungsmethode o_O xD

ich hab ihn auch angepasst an meine sachen aber ich komme nicht auf die Lösung^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


fire
Member


Anmeldedatum: 26.07.2011
Beiträge: 143

Antworten mit Zitat
BeitragVerfasst am: 10.07.2012, 17:59    Titel:

du musst mal ein bisschen genauer sagen, wo ein Fehler auftritt. Sonst kann dir leider keiner helfen.
_________________
http://www.mediahdcenter.de
Kostenloses und gutes Farbkorrekturprogramm auf meiner Webseite
Ich suche noch nach einem Namen für dieses Programm.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


Scantraxx
Member


Anmeldedatum: 18.06.2012
Beiträge: 11

Antworten mit Zitat
BeitragVerfasst am: 10.07.2012, 18:02    Titel:

Code:
player = new player(new Vector2(), playerTexture);

Das streikt bei mir.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Beiträge der letzten Zeit anzeigen:   
 
Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de