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
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 |
// Berechnung der Kollision zweier Kreise bool CircleHitsCircle(const Vector2D& CenterA, // Mittelpunkt Kreis A const float RadiusA, // Radius Kreis A const Vector2D& CenterB, // Mittelpunkt Kreis B const float RadiusB) // Radius von Kreis B { // Wenn die Entfernung der beiden Mittelpunkte kleiner oder gleich // der Summe der beiden Radien ist, liegt eine Kollision vor. return (CenterA - CenterB).LengthSq() <= (RadiusA + RadiusB) * (RadiusA + RadiusB); } |
Quellcode |
|
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
BOOL ball_zeichnen (HWND hwnd) { // Vorbereitung // HDC hdc ; PAINTSTRUCT ps ; int farbmischung; //Farbe des Kreises HBRUSH pinsel; //Pinseltyp von MS vorgegeben double x, y; //int v0; //Anfangsgeschwindigkeit double winkel; //double hilfswinkel; int g=20; //Zufällige Zahlen ausrechnen wenn nicht fest definiert if (v0 == 0) { srand(time(NULL)); v0 = rand () % 10+1; hilfswinkel = rand () % 89+1; //Zur Kontrolle in Konsole printf("\nZufallszahl: v0 ist %i", v0); printf("\nZufallszahl: hilfswinkel ist %f", hilfswinkel); } //Abschusswinkel ausrechnen hilfswinkel; // in Grad winkel=-((hilfswinkel*PI)/180); //Umrechnung in rad printf("\nmeine_Unterprogramme.c:Winkel hat den Wert %f", winkel); //Ausgabe Konsole //zeitabhängige Variable t hochzählen t=t+1; printf("\nmeine_Unterprogramme.c:Variable t hat den Wert %i", t); //Ausgabe Konsole //Definition der Bewegung x=0.5*v0*cos(winkel)*t; y=0.5*v0*sin(winkel)*t; //Definition der Abbruchbedingen abbruchzaehler = v0*t; if (abbruchzaehler >= 1500) { KillTimer(hwnd,TIMER_1); t = 0; v0 = 0; hilfswinkel = 0; pro_v0 = 0; pro_hilfswinkel = 0; MessageBox (hwnd,"Du warst zu langsam!\nNochmal!","Meldung",MB_OK | MB_ICONEXCLAMATION); } InvalidateRect (hwnd, NULL, TRUE) ; hdc = BeginPaint (hwnd, &ps); //Zeichenbefehle // farbmischung = RGB(255, 0, 0); // Hier kann die Farbe des Kreises verändert werden pinsel = CreateSolidBrush (farbmischung); SelectBrush(hdc, pinsel); SetViewportOrgEx(hdc, 5, 410, NULL); // Hier kann der Mittelpunkt der ~Kreisbewegung verändert werden Ellipse(hdc, (int) x-20, (int) y-20, (int)x+20, (int) y+20); //Hier kann der Kreisdurchmesser verändert werden DeleteObject(pinsel); //Nachbearbeitung // EndPaint (hwnd, &ps) ; UpdateWindow(hwnd); return 0; } |
Administrator
C-/C++-Quelltext |
|
1 2 3 4 5 |
struct Vector2D { float x; float y; }; |
Alter Hase
Zitat
Vector2D ist sowas wie:
C-/C++-Quelltext
1 2 3 4 5 struct Vector2D { float x; float y; };
Zitat
ich bastel gerade an einem Spiel in WinAPI
Zitat von »"K-Bal"«
Stichwort SFML.
Zitat von »"n0_0ne"«
Zitat von »"K-Bal"«
Stichwort SFML.
Bekommst du von Laurent eigentlich Geld für die ganze Werbung? Angebracht wäre es zumindest
Alter Hase
Zitat von »"n0_0ne"«
Zitat von »"K-Bal"«
Stichwort SFML.
Bekommst du von Laurent eigentlich Geld für die ganze Werbung? Angebracht wäre es zumindest
Zitat von »"GR-PA"«
... Wenn ich das schon lese...
Die GDI ist völlig ungeeignet um ein Spiel zu programmieren. Sie ist für statische Anzeige von Grafiken optimiert und es ist Schwachsinn damit ein Spiel programmieren zu wollen. Außerdem ist es auch viel zu umständlich.
C-/C++-Quelltext |
|
1 2 3 4 |
bool CircleHitsCircle(const Vector2D& CenterA, // Mittelpunkt Kreis A const float RadiusA, // Radius Kreis A const Vector2D& CenterB, // Mittelpunkt Kreis B const float RadiusB) // Radius von Kreis B |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
int main() { int iValue = 5; Inc(iValue); std::cout << iValue; //Hier wird iValue 6 sein! } void Inc(int &iValue) { iValue++; } |
Werbeanzeige