myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Gemeinschaft » Projekte » Vier-Gewinnt (wieder mal ^^]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Vier-Gewinnt (wieder mal ^^]

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
wizer
myCSharp.de-Mitglied

Dabei seit: 28.04.2007
Beiträge: 196


wizer ist offline

Vier-Gewinnt (wieder mal ^^]

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:
- Spielsteine verschwinden nach minimieren, maximieren (also wenn neu gezeichnet werden muss. Irgendwas hab ich da falsch gemacht ...)
- Zurzeit wird noch nicht berrechnet ob man gewonnen hat (Hab bis jetzt noch keine Lösung dafür gefunden ...)

PS: Das Programm mit dem Source poste ich gleich (schreib grad von meinem Handy)

mfg wizer

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von wizer am 25.04.2008 13:52.

Neuer Beitrag 25.04.2008 13:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
schaedld schaedld ist männlich
myCSharp.de-Mitglied

avatar-2533.jpg


Dabei seit: 05.04.2006
Beiträge: 1.433
Entwicklungsumgebung: Visual Studio 2017 / VS Code
Herkunft: Schweiz


schaedld ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
- 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.
Neuer Beitrag 25.04.2008 14:16 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo wizer,

klingt als würdest du nicht im OnPaint zeichnen. Siehe  [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox)

herbivore
Neuer Beitrag 25.04.2008 14:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.


JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

du hast doch eine spielfeldmatrix oder? da lässt sich doch leicht berechnen, ob jemand 4 steine in einer reihe hat.
Neuer Beitrag 25.04.2008 15:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
wizer
myCSharp.de-Mitglied

Dabei seit: 28.04.2007
Beiträge: 196

Themenstarter Thema begonnen von wizer

wizer ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 ^^


Dateianhang:
unknown 4gewinnt_Beispiel.rar (8,09 KB, 384 mal heruntergeladen)
Neuer Beitrag 25.04.2008 15:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
wizer
myCSharp.de-Mitglied

Dabei seit: 28.04.2007
Beiträge: 196

Themenstarter Thema begonnen von wizer

wizer ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Source:


Dateianhang:
unknown 4gewinnt.rar (36,15 KB, 413 mal heruntergeladen)
Neuer Beitrag 25.04.2008 15:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.


JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

hallo,

ein wenig konstruktive kritik:

C#-Code:
private void CheckFinished()
        {
            if (false)
                Gewonnen(this, null);
        }

ist wohl nicht sinnig, da die if konstant false ist...

C#-Code:
Graphics g = this.CreateGraphics();
            g.DrawImage(bmp, 0, 0);
            g.Dispose();

das gehört überarbeitet.

C#-Code:
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:
1. kein bl: alle aufgaben übernimmt bei dir die gui. doch das ist falsch.
2. keine datenhaltungsobjekte: z.b. das spielfeld gehört in ein eigenes objekt herein.
3. keine dokumentation: wenn du das in einer firma machst ........


als allererstes programm eine nette aufgabe aber an der umsetzung kannst du noch feilen.

gruß Jack
Neuer Beitrag 26.04.2008 01:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo JAck30lena,

Zitat von JAck30lena:
if (false) Gewonnen(this, null); ist wohl nicht sinnig, da die if konstant false ist...

nicht sinnig, aber z.Z. wohl Absicht:

Zitat von winzer:
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
Neuer Beitrag 26.04.2008 09:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 12 Jahre.
Der letzte Beitrag ist älter als 12 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 12.08.2020 20:51