Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Mein erstes Spiel: Snake Klon mit GDI+ (Mit Quellcode)
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

Themenstarter:

Mein erstes Spiel: Snake Klon mit GDI+ (Mit Quellcode)

beantworten | zitieren | melden

Hallo zusammen

Für meine ersten Versuche mit C# musste ich mir ein Ziel setzen,
damit die Motivation nicht sinkt.

Am besten nimmt man für eine solche Aufgabe, was leichtes.
Also hab ich mich an einem Snake Klon versucht.

Nun, das Spiel an sich ist nicht so aufregend, kennen ja alle schon.
Wichtig war für mich was dahinter steckt.
Ich habe zudem auch Wert auf gutaussehend-geschmückte GUI gelegt.

Runtime:
Das Spiel basiert auf .NET Framework 2.0

Steuerung:
Mit den normalen Pfeiltasten

Bekannte Fehler:
Wenn man zu schnell die Richtung wechselt, also z. B. die Schlange nach oben fährt und man drückt "Rechts" und gleich danach "Runter", kommt der Timer damit nicht klar bzw. bekommt er die falsche Information und es gibt eine Selbstkollision.
Konnte dies noch nicht beheben.


Das Spiel ist im Anhang.

<edit>
- Version 1.1 mit Sourcecode ist im Anhang
!! Vor dem Ausführen in Visual Studio muss noch die Referenz auf "DoubleBufferedPanel" registriert werden.
DLL liegt bei !!
</edit>

Ich freue mich auf euer Feedback.

Gruss Peter


Attachments
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
Lord Hessia
myCSharp.de - Member



Dabei seit:
Beiträge: 497
Herkunft: Gießener Umland

beantworten | zitieren | melden

Coole Sache. Hab jetzt gezockt bis die Augen geflimmert haben - leider geht das nach einem durchprogrammierten Tag recht schnell... Immerhin 840 Punkte.

Meinst Du, Du kriegst es hin, dass die grünen was auch immer - waren das nicht Äpfel im Original ? - nicht unter der Schlange auftauchen könne?

Ansonsten - ich warte schon auf Version 2.0 mir Gegner und Netzwerkmodus
Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

Themenstarter:

beantworten | zitieren | melden

Hi Lord Hessia

Danke für dein Feedback.
Zitat
Original von Lord Hessia
Coole Sache. Hab jetzt gezockt bis die Augen geflimmert haben - leider geht das nach einem durchprogrammierten Tag recht schnell... Immerhin 840 Punkte.
Wow, so weit bin ich nicht einmal gekommen :-)
Zitat
Original von Lord Hessia
Meinst Du, Du kriegst es hin, dass die grünen was auch immer - waren das nicht Äpfel im Original ? - nicht unter der Schlange auftauchen könne?
Ja, sollte kein Problem sein, kann ich direkt über die Kollision regeln.
Ich habe das schon bemerkt, fand es aber nicht weiter schlimm, da die Schlange ja darübermoven kann und nur der Kopf frisst ;-)
Äpfel, kann sein - ehrlich gesagt, habe ich das Original noch gar nie gesehen.
Das erste Snake auf dem Nokia und ansonsten nur Klone auf dem PC.... ich glaube es gibt überhaupt nur Klone ;-)
Zitat
Original von Lord Hessia
Ansonsten - ich warte schon auf Version 2.0 mir Gegner und Netzwerkmodus :D
Mit Gegnern, was sollen die dann tun?
Netzwerkmodus, wie soll der, deiner Meinung nach, aussehen?


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
Emac
myCSharp.de - Member



Dabei seit:
Beiträge: 10
Herkunft: Friedrichshafen

beantworten | zitieren | melden

Anregungen:

*Tastaturkürzel für Pause
*Geschwindigkeit einstellen

und wenn ich z.B mit Tab den Focus ner anderen Applikation gebe und zum Spiel zurückwechsel, kann ich nicht mehr steuern!?

Emac
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Peter Bucher,
Zitat
gibt eine Selbstkollision.
das löst war das Problem nicht vollständig, aber ich habe es in meinem Klon (bevor ihr fragt, ob ihr den haben könnt: Textoberfläche auf einem PC mit 8088 (also zwei Generationen vor den 286ern) in C unter QNX; ist mittlerweile ohnehin den Weg alles irdischen gegangen) so gemacht, dass ich Tasten, die zu einer Selbstkollision durch direktes Rückwärtslaufen führen würden, einfach ignoriert habe.
Zitat
Ich habe das schon bemerkt, fand es aber nicht weiter schlimm,
Es ist aber nervig, wenn man eine lange Schlange hat, dass man warten muss, bis man drübergekrochen ist, bevor man wieder fressen kann. Mal abgesehen davon, dass der Konflikt gerade dann besonderst häufig auftritt, wenn die Schlange lang ist.
Zitat
Äpfel, kann sein
Zumindest kämen Äpfel (welche Symbolkraft :-) einem gutaussehend-geschmückten GUI näher als grüne Quadrate. Auch grüne Tomaten wären eine Möglichkeit.
Zitat
Mit Gegnern, was sollen die dann tun?
Weitere Schlangen steuern und einem möglichst fies vor der Nase rumfahren. Könnten auch Computergegner sein.
Zitat
Netzwerkmodus, wie soll der, deiner Meinung nach, aussehen?
Dass mehrere Spieler über das Netzwerk zusammen auf einem gemeinsamen Spielfeld (das jeder auf seinem Schirm sieht) ihre Schlange steuern können.

herbivore
private Nachricht | Beiträge des Benutzers
Big Al
myCSharp.de - Member



Dabei seit:
Beiträge: 348
Herkunft: Mannheim

beantworten | zitieren | melden

Hi,
hast du die Icons und das Bild im About-Fenster selbst gemacht?
Wie siehts mit dem Source aus, willst du den veröffentlichen?
Grüße
Big Al
Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.
private Nachricht | Beiträge des Benutzers
Lord Hessia
myCSharp.de - Member



Dabei seit:
Beiträge: 497
Herkunft: Gießener Umland

beantworten | zitieren | melden

Herbivore ist also offensichtlich auch ein alter Snake-Guru und hat Deine Fragen schon weitesgehend mit dem beantwortet, was ich auch geschrieben hätte.

Für den Mehspielermodus fallen mir mindestens zwei Möglichkeiten ein. Zum einen ein einfaches Spiel gegen die Zeit, in der in einem festgelegten Zeitraum die meisten Punkte geholt werden müssen. Und dann eben der Modus, wo es darum geht, den Gegner in die Enge zu treiben.

Außerdem noch weitere interessante Features:

** Highscoreliste offline (also im Programm direkt abrufbar) und online (also auf einer Webseite).

** Nicht nur grüne, essbare Dinge sondern auch nicht essbare (z.B. Spinat - damit würdest Du gleich ein viel jüngeres Publikum ansprechen, die doch heutzutage ein wahres 2D-Spiel gar nicht mehr zu schätzen wissen - oder Zitronen - wie wir alle wissen, vertragen Schlagen ja kein Vitamin C... oder so).
Hier könnte man sich natürlich auch noch andere Gimmicks ausdenken, die die Schlange temporär schneller oder langsamer werden lassen, vergrößern oder verkleinern, die aufgesammelten Punkte für einen bestimmten Zeitraum erhöhen oder verringern, etwas dass die ganze Schlange unsichtbar werden lässt bis auf den Kopf oder das einfach die Farben umdreht usw.

** Psychedelische Fahrstuhlmusik im Hintergrund

** Explosionsanimationen beim Zerstören der Schlange

mir fällt bestimmt noch mehr ein bis morgen
Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.
private Nachricht | Beiträge des Benutzers
Maddinel
myCSharp.de - Member

Avatar #avatar-3180.gif


Dabei seit:
Beiträge: 1378
Herkunft: Deutschland

beantworten | zitieren | melden

Hi,

ich hab auch gerade mal ne Runde gezockt, ist wirklich gut geworden.

Ps.: Bei mir warens im ersten Versuch gerade mal 280 Punkte X(

Aber großes Lob, ist gut geworden.
==============================
Wenn ichs wüsst', würd' ich nicht fragen!!!
==============================
private Nachricht | Beiträge des Benutzers
vicon
myCSharp.de - Member

Avatar #avatar-2044.jpg


Dabei seit:
Beiträge: 37
Herkunft: NBG (Mittel-Franken)

beantworten | zitieren | melden

moin,

hab noch nen bug endeckt

=> schaut euch das pic im anhang an

Das Tempo wird nach einem "neues spiel" nicht resetet.
Aber ich weiß nicht ob es nur ein Anzeigen bug ist, oder ob die Geschwindigkeit dann wirklich bei gehalten wird (die geschwindigkeitsveränderungen fallen nicht großartig auf, erst im laufe der zeit)

überprüfe das bitte

aber sonst ein tolles game für die mittagspause ;D
Attachments
life is to short, dont go to big !!
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

Themenstarter:

beantworten | zitieren | melden

Hallo zusammen,

danke für das reichliche Feedback.
Ich habe ein paar eurer gewünschten Änderungen durchgeführt.
Und die gemeldeten Fehler gefixt.

Der Quellcode ist freigegeben (zu finden im Initialposting von mir).
Zitat
Original von Emac
*Tastaturkürzel für Pause
[x] done
Zitat
Original von Emac
*Geschwindigkeit einstellen
Wie meinst du das genau, wann und wie soll die Geschwindigkeit einstellbar sein?
Zitat
Original von Emac
und wenn ich z.B mit Tab den Focus ner anderen Applikation gebe und zum Spiel zurückwechsel, kann ich nicht mehr

steuern!?
[x] done
Zitat
Original von herbivore
Es ist aber nervig, wenn man eine lange Schlange hat, dass man warten muss, bis man drübergekrochen ist, bevor man

wieder fressen kann. Mal abgesehen davon, dass der Konflikt gerade dann besonderst häufig auftritt, wenn die Schlange

lang ist.
Stimmt vollkommen!
[x] done
Zitat
Original von herbivore
Zumindest kämen Äpfel (welche Symbolkraft :-) einem gutaussehend-geschmückten GUI näher als grüne Quadrate. Auch

grüne Tomaten wären eine Möglichkeit.
Ja du hast Recht, ich habee ein bisschen übertrieben.
Jetzt ist es eine Banane und ein Apfel, mit Bildern.
Zitat
Original von herbivore
Weitere Schlangen steuern und einem möglichst fies vor der Nase rumfahren. Könnten auch Computergegner sein.

Dass mehrere Spieler über das Netzwerk zusammen auf einem gemeinsamen Spielfeld (das jeder auf seinem Schirm sieht)

ihre Schlange steuern können.
Okay, das heb ich mir für später auf.
Zitat
Original von Big Al
hast du die Icons und das Bild im About-Fenster selbst gemacht?
Jein, ein Kollege von mir (Alexander von http://www.twin4matic.ch/) hat sie gemacht.
Zitat
Original von Big Al
Wie siehts mit dem Source aus, willst du den veröffentlichen?
Ja, mit dieser Antwort ist er im Anhang bei der aktuellen Version dabei!
Zitat
Original von Lord Hessia
** Highscoreliste offline (also im Programm direkt abrufbar) und online (also auf einer Webseite).

** Nicht nur grüne, essbare Dinge sondern auch nicht essbare (z.B. Spinat - damit würdest Du gleich ein viel jüngeres

Publikum ansprechen, die doch heutzutage ein wahres 2D-Spiel gar nicht mehr zu schätzen wissen - oder Zitronen -

wie wir alle wissen, vertragen Schlagen ja kein Vitamin C... oder so).
Hier könnte man sich natürlich auch noch andere Gimmicks ausdenken, die die Schlange temporär schneller oder langsamer

werden lassen, vergrößern oder verkleinern, die aufgesammelten Punkte für einen bestimmten Zeitraum erhöhen oder

verringern, etwas dass die ganze Schlange unsichtbar werden lässt bis auf den Kopf oder das einfach die Farben umdreht

usw.

** Psychedelische Fahrstuhlmusik im Hintergrund

** Explosionsanimationen beim Zerstören der Schlange
Interessante Anregungen, die online Highscore Liste hab ich mir sowieso vorgenommen. Brauche ich dann nicht nur für das

Programm.
Die anderen Sachen könnt ihr euch doch selber machen, de Quellcode ist freigegeben.
Zitat
Original von Maddinel
ich hab auch gerade mal ne Runde gezockt, ist wirklich gut geworden.
Danke Maddinel :-)
Zitat
Original von vicon
Das Tempo wird nach einem "neues spiel" nicht resetet.
aber sonst ein tolles game für die mittagspause ;D
[x] done && danke!
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
vicon
myCSharp.de - Member

Avatar #avatar-2044.jpg


Dabei seit:
Beiträge: 37
Herkunft: NBG (Mittel-Franken)

beantworten | zitieren | melden

Ach ja, und bitte änder die Geschwindikeits Anzeige, nicht in 10er Schritten sondern in in 1nern (übersichtlicher) UND vll dass die Geschwindigkeit sich vll nicht alle 5 viecher erhöht, sondern alle 10.


naja, dass man die Geschwindigkeit einstellen kann, könnte man sich ja wie beim Handy-Snake vorstellen. Bei welcher Geschwindigkeit man startet will, zB wenn man nun immer bei einer geschwindigkeit von 300 stirbt, dass man da dann immer einsteigen kann, um mit dieser geschwindikeit zurecht zukommen.

Vll so =>
Attachments
life is to short, dont go to big !!
private Nachricht | Beiträge des Benutzers
progger
myCSharp.de - Member

Avatar #avatar-2094.gif


Dabei seit:
Beiträge: 1334
Herkunft: Nähe von München

beantworten | zitieren | melden

Eine Frage: Du benutzt Visual Studio 2005 (es ist zumindest eine VS05-Solution) und somit auch .NET 2.0. Warum benutzt du dann eine ArrayList zum speichern von Punkten anstatt einer List<Point>?
A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

Themenstarter:

beantworten | zitieren | melden

Zitat
Original von progger
Eine Frage: Du benutzt Visual Studio 2005 (es ist zumindest eine VS05-Solution) und somit auch .NET 2.0. Warum benutzt du dann eine ArrayList zum speichern von Punkten anstatt einer List<Point>?
Ja ich benutze VS 2005 (sollte in meinem Profil zu sehen sein).
Ich habe mich noch nicht gross mit Generics auseinandergesetzt, darum.

<edit>
Danke für deinen Hinweis.
Habs jetzt mit List<Point> gemacht, Webcast sei Dank :-)
</edit>


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Peter Bucher,
Zitat
Ich habe mich noch nicht gross mit Generics auseinandergesetzt, darum.
solltest du. Ist auch nicht schwer, im Gegenteil, eigentlich ist es leichter, u.a. weil man nicht Casten muss. Und sicherer ist es auch.

herbivore
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

Themenstarter:

beantworten | zitieren | melden

Zitat
Original von herbivore
solltest du. Ist auch nicht schwer, im Gegenteil, eigentlich ist es leichter, u.a. weil man nicht Casten muss. Und sicherer ist es auch.
Hallo Herbivore

Hab mir einen Webcast zum Thema angeschaut, eigentlich gar nicht schwierig.
Nun, im Spiel erspare ich mir einen Cast ;-)


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
Stube
myCSharp.de - Member



Dabei seit:
Beiträge: 116
Herkunft: Wildbergerhütte

beantworten | zitieren | melden

so, jetzt dürfen mich alle mal ganz laut auslachen aber ich habe ne frage
Wie kann ich das spiel öffnen ? ich hab die ganzen sachen runtergeladen und wenn ich auf irgendsne dateiklicke öffnet sich mein c# !

mfg
Stube
Auch anfänger haben "mal" ne frage
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3430
Herkunft: Trier -> München

beantworten | zitieren | melden

@Stube
einfach mal das Projekt kompilieren...
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

Themenstarter:

beantworten | zitieren | melden

Die Solution Datei öffnen.
Referenz auf DoubleBufferedPanel.dll aktaullisieren bzw. korrigieren.

Starten!
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
Stube
myCSharp.de - Member



Dabei seit:
Beiträge: 116
Herkunft: Wildbergerhütte

beantworten | zitieren | melden

kompilieren geht doch über dos und dann crs oder sowas, das hatte ich probiert, ging nit
Auch anfänger haben "mal" ne frage
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Stube,

crs? Du meinst csc, oder? Ja sollte auch gehen, aber man muss natürlich genau die Schritte machen, die VS auch macht, also vermutlich auch noch Ressourcen einbinden.

Davon abgesehen ist "geht nicht" leider keine hilfreiche Fehlerbeschreibung.

herbivore
private Nachricht | Beiträge des Benutzers
Robert G
myCSharp.de - Member

Avatar #avatar-1907.png


Dabei seit:
Beiträge: 348
Herkunft: München

beantworten | zitieren | melden

Zitat
Original von herbivore
Hallo Stube,

crs? Du meinst csc, oder? Ja sollte auch gehen, aber man muss natürlich genau die Schritte machen, die VS auch macht, also vermutlich auch noch Ressourcen einbinden.

Davon abgesehen ist "geht nicht" leider keine hilfreiche Fehlerbeschreibung.
Oder einfach das Projekt/die Solution mit MsBuild kompilieren. :-)
msbuild.exe DeinProjekt.csproj
natürlich noch den Pfad zu msbuild ergänzen bzw als Umgebungsvariable setzen.
private Nachricht | Beiträge des Benutzers