Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

De_Struktor

unregistriert

1

14.05.2013, 23:36

Bombe soll an der Position des Spielers auftauchen

Grüß Gott,

Wie kann ich es hinbekommen, das beim Tastendruck <<leertaste>> die Bombe immer an der Position des Spielers gezeichnet wird.

C#-Quelltext

1
bomb_rect = new Rectangle(player_Rect.X, player_Rect.Y, player_Rect.Width, player_Rect.Height);


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
protected override void Update(GameTime gameTime)
        {
// Lediglich Testcode, wird nachher sobald es funktioniert auch "gesäubert"

            Block_map.myPlayer.UpdatePlayer(Red_Blocks, Tree_Blocks);
            if (Keyboard.GetState().IsKeyUp(Keys.Space))
            {
                block = false;
            }
            else if (Keyboard.GetState().IsKeyDown(Keys.Space))
            {
                if (!block) 
                {
                   block = true;
                   
                   if (player_Rect.X >= 30)
                   {
                       bomb_rect = player_Rect;
                   }
                }
            }  
        }



C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.White);
            spriteBatch.Begin();
            Block_map.myPlayer.Draw(spriteBatch);
            
            Block_map.Draw(spriteBatch);
            //Block_map.frostbomb.DrawBomb(spriteBatch);
 
            spriteBatch.Draw(bomb_text, bomb_rect, Color.White);
            
            spriteBatch.End();
            base.Draw(gameTime);
        }


Bombe wird immer an einer Position gezeichnet!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

15.05.2013, 06:52

Zeile 18 sieht falsch aus. Das, was da steht, widerspricht Deinem ersten Quellcode-Block.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

15.05.2013, 11:21

Du willst dass die Bombe fest am Spieler klebt und sich mit bewegt? Oder möchtest du dass die Bombe an der Position des Spielers platziert wird, dieser sich aber von der Bombe wegbewegen kann?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

15.05.2013, 11:21

Bei einem Bomberman wohl eher letzteres ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

15.05.2013, 11:24

Kommt ja auf die Umsetzung an. Möglicherweise möchte man ein Verhalten wie bei Zelda, wobei der Spieler die Bombe auch tragen kann. Ich kann ja nur raten was in den Köpfen abgeht;) Dann würde ich gern wissen was genau nicht Funktioniert? Wo landet die Bombe denn wenn sie nicht an der Spielerposition landet?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

15.05.2013, 11:26

Kann schon sein. Trotzdem widersprechen sich dann die beiden von mir benannten Zeilen ;) Egal wie. Die eine macht das eine, die andere das anderes :)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

De_Struktor

unregistriert

7

15.05.2013, 11:48

Schorsch, ich will das sie immer wenn leertaste gedrückt wird, soll die posi der bombe = der posi des spielrts sein, also leertaste dann ist bombe = spielerposition und nzr we gedrueckt wird! !

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

15.05.2013, 12:46

@BC: Meiner Meinung nach müsste in beiden Fällen das selbe passieren. Rectangle ist ein Struct. Im ersten Fall wird ein Struct erzeugt mit den Werten vom Rectangle des Spielers. Im zweiten Fall wird dieses eben kopiert. Das Ergebnis sollte meiner Meinung nach das selbe sein.

Ich sehe so grad keinen Fehler. Vielleicht rede ich aber auch Unsinn und BC hat recht. Ich würde es mit dem Debugger versuchen. Gucken was da wo gesetzt wird, wo die Position noch stimmt und ab wann nicht mehr.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

15.05.2013, 12:52

@BC: Meiner Meinung nach müsste in beiden Fällen das selbe passieren.
bomb_rect und player_Rect sind ganz offenbar pointer. Von daher ist

Quellcode

1
bomb_rect = new Rectangle(player_Rect.X, player_Rect.Y, player_Rect.Width, player_Rect.Height);
und

Quellcode

1
bomb_rect = player_Rect;
wohl kaum dasselbe.
Bei letzterem wird also nichts kopiert, da wird einfach nur ein Pointer verbogen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Thunetoft

Frischling

Beiträge: 10

Wohnort: Brechen

Beruf: SW-Developer

  • Private Nachricht senden

10

15.05.2013, 13:11

Wenn ich davon ausgehe, dass der TE C# verwendet würde ich davon ausgehen, dass Schorschs Ansicht richtig ist, da Rectangle( aus System.Drawing) ein struct ist und damit ein System.ValueType.

Sollte es sich bei dem Rectangle jedoch um das Rectangle aus System.Windows.Shapes (welches eine Klasse ist), wäre natürlich BlueCobolds Ansicht die richtige.

Ich gehe jedoch in dem Fall eher von System.Drawing aus. Aber 100%ig ersichtlich ist das aus dem gezeigten Quellcode nicht.

Werbeanzeige