Scantraxx Member
Anmeldedatum: 18.06.2012 Beiträge: 11
|
Verfasst 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
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  |
|
| Nach oben |
|

|
Philipp Neuling
Anmeldedatum: 31.03.2012 Beiträge: 6 Wohnort: Bayern
|
Verfasst 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 |
|

|
Scantraxx Member
Anmeldedatum: 18.06.2012 Beiträge: 11
|
Verfasst 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 |
|

|
Philipp Neuling
Anmeldedatum: 31.03.2012 Beiträge: 6 Wohnort: Bayern
|
Verfasst 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
Du müsstest vlt. noch mehr code posten,weil mit dem bisherigen alleine kann ich dir leider nicht weiterhelfen, sry. |
|
| Nach oben |
|

|
FirstChoice Member
Anmeldedatum: 01.06.2012 Beiträge: 200
|
Verfasst 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 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 |
|

|
simsmaster Member
Anmeldedatum: 05.08.2009 Beiträge: 1631 Wohnort: Langenhagen
|
Verfasst am: 08.07.2012, 19:43 Titel: |
|
Dein Code oben wird nicht funktionieren, weil deine normale Draw Methode mit einem Clear() beginnt  _________________ Mein Blog - XNA FAQ |
|
| Nach oben |
|

|
FirstChoice Member
Anmeldedatum: 01.06.2012 Beiträge: 200
|
Verfasst am: 08.07.2012, 22:29 Titel: |
|
Wen meinst du jetzt?  |
|
| Nach oben |
|

|
Chrisor Member
Anmeldedatum: 07.07.2012 Beiträge: 11
|
Verfasst 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 |
|

|
FirstChoice Member
Anmeldedatum: 01.06.2012 Beiträge: 200
|
Verfasst am: 09.07.2012, 19:05 Titel: |
|
machs einfach so wie ich geschrieben habe 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 |
|

|
Scantraxx Member
Anmeldedatum: 18.06.2012 Beiträge: 11
|
Verfasst am: 10.07.2012, 17:27 Titel: |
|
Es stimmt der Code funktioniert leider nicht  |
|
| Nach oben |
|

|
fire Member
Anmeldedatum: 26.07.2011 Beiträge: 143
|
Verfasst 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 |
|

|
FirstChoice Member
Anmeldedatum: 01.06.2012 Beiträge: 200
|
Verfasst 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 |
|

|
Scantraxx Member
Anmeldedatum: 18.06.2012 Beiträge: 11
|
Verfasst 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 |
|

|
fire Member
Anmeldedatum: 26.07.2011 Beiträge: 143
|
Verfasst 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 |
|

|
Scantraxx Member
Anmeldedatum: 18.06.2012 Beiträge: 11
|
Verfasst am: 10.07.2012, 18:02 Titel: |
|
| Code: | | player = new player(new Vector2(), playerTexture); |
Das streikt bei mir. |
|
| Nach oben |
|

|
|