Vier Steine in einer Reihe - Vier Gewinnt
-
st schrieb:
hat mir jemand den Quellcode für ein einfaches vier gewinnt.
Ja, dann mach mal.
Bitte helft mir schnell
Ist dringend, oder was? Dann wuerd ich mich an Deiner Stelle beeilen.
-
hausaufgaben kopieren.... tz tz

-
Hi,
hier schnell der komplette Code fuer ein 4 Gewinnt:
#include <iostream> using namespace std; int main() { // An dieser Stelle koennte man ein schoenes 3D Intro abspielen char Spieler; // Spiele(schleife) cout << "Waehle Spieler (1/2): "; cin >> Spieler; // Gewinnabfrage mit Siegerehrung if(Spieler == '1') cout << "Spieler 1 hat 4" else cout << "Spieler 2 hat 4" // hier noch die Mitarbeiternamen einfuegen cout << "Credits: ..." return 0; }
-
Und das kommt durch den Compiler?
Übrigens könntest du die Siegerehrung noch kürzer schreiben:
cout<<"Spieler "<<Spieler<<" hat 4.\n";
-
Hi,
naja ok die 3 ; hatte ich im arbeitswahn vergessen :p
Und sicher, optimieren kann man das Spiel ja noch. Man koennte ja fuer die einzelnen Spieler eine Klasse erstellen z.B.

-
Kenner des 4 Gewinnt schrieb:
Und sicher, optimieren kann man das Spiel ja noch. Man koennte ja fuer die einzelnen Spieler eine Klasse erstellen z.B.

Man kann's auch übertreiben

(aber trotzdem solltest du den Abschnitt zwischen
cin>>Spieler;undif(Spieler=='1')nochmal überarbeiten)
-
Hi,
naja ich hab das Programm ja noch nicht compiliert, sieh es quasi als ersten groben Entwurf

Mal was anderes, du kennst dich doch bestimmt mit MFC und so gut aus.
Ich habe vor eine Floodfill Funktion selber zu schreiben. Nur wenn ich folgenden Code in z.B. die OnLButtonUp Funktion einfuege gehen sie nicht:CPaintDC dc(this); dc.SetPixel(100, 100, RGB(255,0,0)); Invalidate();Liegt irgendwie am dc(this), den er sich nicht 'richtig' holen kann.
Was muss ich denn tun, wenn ich SetPixel und GetPixel ausserhalb von OnPaint nutzen will
-
Hi,
das Problem hat sich gerade von alleine geloest. Ich mache es jetzt so:CClientDC dc(this); dc.SetPixel(100, 100, RGB(0,0,0));Hatte statt 'CClientDC' das 'CPaintDC' verwendet

Naja ok zurueck zum eigentlichen 4 Gewinnt Problem
-
Kenner des 4 Gewinnt schrieb:
Was muss ich denn tun, wenn ich SetPixel und GetPixel ausserhalb von OnPaint nutzen will

Lass es lieber - für's Zeichnen ist nunmal die OnPaint() zuständig, wenn sich da eine andere Funktion reinhängt, bringt das nur Probleme (da gibt es zu viele Situationen, in denen die OnPaint() aufgerufen werden könnte - und die überschreibt dir dann deine wunderschöne Bildschirmausgabe).
PS: Ob ich mich mit MFC "gut" auskenne, weiß ich nicht. Jedenfalls reicht's für den Hausgebrauch

-
Hi,
habs doch mal riskiert ausserhalb zu zeichnen
Naja stimmt schon, dass sobald man das Fenster verschiebt, alles wieder weg ist usw., aber wollte ja nur mal so ein Floodfill mit Rekursion selber machen.
Klappt auch soweit ganz gut
Naja wenn die zu fuellenden Flaechen zu gross werden stuerzt es zwar ab, aber is nu auch egal.Wenn ich jetzt nochn Radiergummi und die kleinen erstlichen DInge einbaue habe ich fast schon MS Paint

-
Du könntest dir auch einen Memory-DC anlegen, in den du dann jeweils reinschreibst - dort kannst du rummalen wie du lustig bist und die OnPaint() ist nur noch dafür verantwortlich, die Daten auf den Bildschirm zu BitBlt()n.
(aber jetzt bitte zurück zum Thema des Beitrags)