Ausgehend von einem Thread den ich hier im Forum gelesen habe, bei dem es darum geht das o.g. Spiel so OO wie möglich zu erstellen, wollte ich nun meine Lösung präsentieren
Das ganze besteht aus einem abgeleitenden Panel welches folgende Einstellungen erlaubt: Reihen, Spalten, Rechtecke oder Kreise und GridLines.
Also der Code ist gesamt denke ich wirklich so OO wie es nur geht. Außerdem kann man unbrenzt Spieler hinzufügen!
Ahja das ganze hab ich mit GDI+ gemacht.
Bekannte Bugs:
PS: Das Programm mit dem Source poste ich gleich (schreib grad von meinem Handy)
mfg wizer
- Spielsteine verschwinden nach minimieren, maximieren (also wenn neu gezeichnet werden muss. Irgendwas hab ich da falsch gemacht ...) Da würde ich spontan auf einen fehlenden Refresh Spielfeldes tippen.
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Hallo wizer,
klingt als würdest du nicht im OnPaint zeichnen. Siehe [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox)
herbivore
Hi. Sry hab wirklich vergessen im OnPaint zu zeichnen. Also hier jetzt das Beispiel und der Source!
mfg wizer
PS: Ja ob man gewonnen hat oder nicht lässt sich sicher leicht berrechnen. Ein paar Schleifen ... hatte jedoch bis jetzt noch keine zeit dafür ^^
hallo,
ein wenig konstruktive kritik:
private void CheckFinished()
{
if (false)
Gewonnen(this, null);
}
ist wohl nicht sinnig, da die if konstant false ist...
Graphics g = this.CreateGraphics();
g.DrawImage(bmp, 0, 0);
g.Dispose();
das gehört überarbeitet.
public void Restart()
{
Graphics grph = this.CreateGraphics();
grph.Clear(this.BackColor);
DrawGrid(this.CreateGraphics());
for (int i = 0; i < fields.Length; i++)
fields[i] = false;
}
hier gleich 2 mal create graphics. ich denke du solltest dir in der faq den beitrag übers zeichenen in winforms durchlesen und das korrekte handling mit creategraphics nochmals ansehen. unter anderem musst du graphics immer selber wieder disposen....
was mir noch so aufgefallen ist:
als allererstes programm eine nette aufgabe aber an der umsetzung kannst du noch feilen.
gruß Jack
Hallo JAck30lena,
if (false) Gewonnen(this, null);
ist wohl nicht sinnig, da die if konstant false ist...
nicht sinnig, aber z.Z. wohl Absicht:
Zurzeit wird noch nicht berrechnet ob man gewonnen hat (Hab bis jetzt noch keine Lösung dafür gefunden ...)
Hallo wizer,
... du musst nur von dem zuletzt geworfenen Stein ausgehend prüfen, ob in horizontaler, vertikaler oder diagonaler Richtung 3 Steine gleicher Farbe angrenzen. Eine reine Fleißaufgabe,
herbivore