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

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

1

06.04.2012, 14:50

[Frage] Breakanoid: Ball eine Steuerung zuweisen?

Schönen guten Tag die Damen und Herren,

ich möchte mir als Übung für ein Projekt das Spiel Breakanoid aus dem Buch vornehmen und die Aufgabe so umwandeln, das ich den Ball nach dem Verlassen vom Paddle, selber steuern kann.
Dazu habe ich schon versucht seine Position im tbVector3 zu integrieren , aber irgendwie klappt das nicht.
Jemand eine Idee oder einen Lösungsansatz?
Ich habe schon überlegt, die automatische zufallsgenerierte Wegfindung vom Ball zu löschen, aber weiss nicht ob es das ist.

Mit besten Grüßen

Nahdar

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

06.04.2012, 15:02

Kommt drauf an wie du den Ball Steuern willst. Wenn er normal Fliegen soll und du ihn nur lenken willst würde ich einfach den Winkel vom Ball anpassen, bzw die Flugrichtung. Wenn du komplette Kontrolle über den Ball haben willst, solltest du zuerst den Code löschen, welcher den Ball bewegt. Danach fügst du dann Schritt für Schritt deinen Code hinzu.
„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.“

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

3

06.04.2012, 15:28

Gut ich habe die komplette Bewegung des Balls rausgenommen , ausser Kollisionsberechnungen mit Wand und Blöcken. Allerdings, wenn ich nun auf die Variablen der Cball- Klasse zugreifen will die sich in Ball.h befindet, dann behauptet mein Programm das m_vVelocity und m_vPosition nicht deklariert sind.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Auf die Pfeiltasten reagieren (m_vVelocity (Ball steuern) ändern)
    m_vVelocity.x += g_pfButtons[TB_KEY_RIGHT] * 50.0f * fTime;
    m_vVelocity.x -= g_pfButtons[TB_KEY_LEFT] * 50.0f * fTime;
    m_vVelocity.z += g_pfButtons[TB_KEY_UP] * 50.0f * fTime;
    m_vVelocity.z -= g_pfButtons[TB_KEY_DOWN] * 50.0f * fTime;
    
    // Den Schläger fortbewegen
    m_vPosition += m_aBall[0].m_vVelocity * fTime;

    // Wenn der Schläger die linke oder rechte Wand berührt, prallt er ab.
    if(m_vPosition.x - 1.0f <= -9.25f) {m_vVelocity.x *= -0.5f; m_vPosition.x = -8.25f;}
    else if(m_vPosition.x + 1.0f >= 9.25f) {m_vVelocity.x *= -0.5f; m_aBall[0].m_vPosition.x = 8.25f;}

    // Die Bewegung abschwächen (80% Verlust pro Sekunde)
    m_vVelocity *= powf(0.2f, fTime);
    
        /* Den Bewegungsvektor des Balls berechnen wir zufällig.
        m_aBall[0].m_vVelocity.x = tbFloatRandom(-4.0f, 4.0f);
        m_aBall[0].m_vVelocity.y = 0.0f;
        m_aBall[0].m_vVelocity.z = tbFloatRandom(8.0f, 10.0f);

        // Den Bewegungsvektor des Schlägers addieren
        m_aBall[0].m_vVelocity += m_vPaddleVel;
        
        // Dem Ball einen kleinen "Schubs" nach vorne geben
        m_aBall[0].m_vPosition.z += 0.1f;
    */}


Das ausgeklammerte war die vorherige Bewegung, die habe ich halt weggeklammert, die normale Steuerung habe ich dem Paddle entnommen und mich dann aber auf den Vector von dem Ball berufen .. allerdings sagt mit die Game.cpp, das er die Variable nicht kennt :(

LG

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nahdar« (06.04.2012, 15:42)


Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

4

06.04.2012, 15:47

Die Variablen sind ja auch Teil des Objekts m_aBall[0]. Das musst du dann auch davor schreiben.

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

5

06.04.2012, 15:52

Die Variablen sind ja auch Teil des Objekts m_aBall[0]. Das musst du dann auch davor schreiben.

habe ich gerade gemacht. Will er dennoch nicht. Also nun funktioniert das Spiel ohne Fehler, allerdings lässt sich der Ball nicht steuern :(

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

6

06.04.2012, 15:57

Schwer zu sagen, woran das liegt, da deine Fehlerbeschreibung so ziemlich alles zu lässt.

Aus dem Codeschnipsel könnte ich höchstens vermuten, dass sich dein Ball sehr sehr langsam bewegt, da du sowohl die Geschwindigkeit, als auch die Position mit dem Zeitwert multiplizierst und somit wahrscheinlich ziemlich kleine Zahlen heraus kommen. Ich weiß aber gar nicht, wie der Ball usw. am Ende bewegt werden, also ist das ins Blaue geraten.

Was du tun solltest, ist das Programm zu debuggen und zu schauen, welche Werte nicht so sind, wie du es geplant hast. So kommt man meist ganz schnell zur Lösung.

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

7

06.04.2012, 16:04

Tut mir Leid deine Zeit beansprucht zu haben :)

Ich habe gerade den Fehler entdeckt, und sorry, ich konnte keine Fehler ausgeben, da das PRogramm gestartet wurde, und von daher fehlerfrei kompiliert wurde.

Ich habe die Steuerung nun in die Ball.cpp geschrieben und konnte damit einfach nur die Werte m_vPosition und m_vVelocity verändern.
Strange but it works :)
Beim nächsten Mal versuche ich so genau wie möglich zu sein okay :)?

MFG

Marcel

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

06.04.2012, 17:00

Naja in deinem Code wolltest du wie schon beschrieben direkt darauf zugreifen. Dass es mit dem Ball davor läuft sieht man an dem Teil den du auskommentiert hast;)
„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.“

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

9

06.04.2012, 17:10

Tut mir Leid deine Zeit beansprucht zu haben :)

Ich habe gerade den Fehler entdeckt, und sorry, ich konnte keine Fehler ausgeben, da das PRogramm gestartet wurde, und von daher fehlerfrei kompiliert wurde.

Ich habe die Steuerung nun in die Ball.cpp geschrieben und konnte damit einfach nur die Werte m_vPosition und m_vVelocity verändern.
Strange but it works :)
Beim nächsten Mal versuche ich so genau wie möglich zu sein okay :)?

MFG

Marcel
Keine Sorge, hätte ich mich nicht damit beschäftigen wollen, hätt ichs auch nicht getan. Das Forum ist ja für Hilfe da. Man kann nur immer besser helfen, wenn das Problem so genau wie möglich schon selbst untersucht wurde. Dazu gehört das Debuggen. War nur ein gut gemeinter Rat, da man gerade am Anfang nicht wirklich damit arbeitet.

Nahdar

Frischling

  • »Nahdar« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

10

06.04.2012, 17:33

Tut mir Leid deine Zeit beansprucht zu haben :)

Ich habe gerade den Fehler entdeckt, und sorry, ich konnte keine Fehler ausgeben, da das PRogramm gestartet wurde, und von daher fehlerfrei kompiliert wurde.

Ich habe die Steuerung nun in die Ball.cpp geschrieben und konnte damit einfach nur die Werte m_vPosition und m_vVelocity verändern.
Strange but it works :)
Beim nächsten Mal versuche ich so genau wie möglich zu sein okay :)?

MFG

Marcel
Keine Sorge, hätte ich mich nicht damit beschäftigen wollen, hätt ichs auch nicht getan. Das Forum ist ja für Hilfe da. Man kann nur immer besser helfen, wenn das Problem so genau wie möglich schon selbst untersucht wurde. Dazu gehört das Debuggen. War nur ein gut gemeinter Rat, da man gerade am Anfang nicht wirklich damit arbeitet.

Okay ich danke rechtherzlich.

Werbeanzeige