Jump`n Run "Spiel"
-
Hallo.
Ich habe mich an eine Art Jump´n Run Spiel gemacht, wollte es aber nicht ins Spiele Programmieren Forum stellen, da ich mir nicht sicher war ob es schon dorthin gehört xDIch habe immoment nur einen Button Den kann ich per Knopfdruck auch schon bewegen. Aber nur mit normalen Tastaturtasten und nicht mit den Pfeiltasten.
Außerdem möchte ich, dass sich der button nur bewegt wenn die entsprechende Taste gedrückt wird und aufhört wenn die Taste losgelassen wird.(außer hoch das passt schon^^).Mein Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Jump_n_Run_xD { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.KeyPreview = true; this.KeyDown += new KeyEventHandler(Form1_KeyDown); } private int X = 1; private int Y = -1; private void Form1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.W: timer1.Start(); break; case Keys.D: timer2.Start(); break; } } private void timer1_Tick(object sender, EventArgs e) { Point location = this.button1.Location; this.button1.Location = new Point(location.X, location.Y + Y); if (location.Y == 370) { Y *= -1; this.button1.Location = new Point(location.X, location.Y + Y); } if (location.Y == 425) { Y *= -1; timer1.Stop(); this.button1.Location = new Point(location.X, location.Y - 1); } } private void timer2_Tick(object sender, EventArgs e) { Point location = this.button1.Location; this.button1.Location = new Point(location.X + X, location.Y); if (location.X == 708) { X *= -1; this.button1.Location = new Point(location.X + X, location.Y); } if (location.X == 0) { X *= -1; timer2.Stop(); this.button1.Location = new Point(location.X + 1, location.Y); } } } }
Nun noch eine nebensächliche Frage die mich einfach interessiert.
Kann man ein Spiel in C# so programmieren, dass der "Spieler" immer im Mittelpunkt steht und sich das Fenster immer weiter in die Richtung bewegt in die Der Spieler rennt? So wie Supermario^^Ps: Könnte ich das ganze auch etwas einfacher, bzw besser gestalten?
mfg Wandernder Mongole
-
Ein Spiel lässt sich grundsaätzlich in jeder Programmiersprache schreiben. Die Wahl der Programiersprachs solltest du davon abhängig machen welche Techniken / Frameworks / API's du einsetzen möchtest.
Was könntest du besser machen?
Die Idee mit den Timern ist grundsätzlich nicht verkehrt. Man könnte einen globalen Timer verwenden, in diesem bewegst du die Welt läst die KI etwas tuen und zeichnest das Bild.Für die Tasten würde ich in einem Enum anlegen und jeder Taste ein Flag in diesem Enum zuweisen. Bei einem KeyDown-Ereigniss wird das Flag gesetzt und bei einem KeyUp-Ereigniss wieder gelöscht.
MfG
Marco
-
Leider weiß ich nicht wie ich Flags setzte.
Kann ich vll wenn key down ist int c = 1 und Key down c = 0 ist das sowas?
Das mit WElt bewegen. ist das so als würden alle Button und so Hide() sein und nur wenn der Timer das erreicht auf show() gestellt?Globaler Timer = alles in einem Timer?
Sollte ich das auch mit Variablen machen?mfg Wanderender Mongole
-
Hallo
Wenn du Spiele programmieren willst, solltest du dir mal xna anschauen.
chrische
-
Das weiß ich eben nicht wo ich das bekomme.
Habe in Google geschaut und nichts gefunden.
Außerdem weiß ich nicht ob es kostenpflichtig ist.mfg
-
Hallo
Es ist nicht kostenpflichtig. Gib mal bei google xna 3.0 und download ein, da findest du bestimmt was.
chrische
-
Zum Thema Flags schaud idr mal folgendes an http://openbook.galileocomputing.de
'Globaler Timer' etwas ungeschickt ausgedrückt
, was ich meine ist folgendes. Wenn der Spieler der Spielwelt betritt, startest du einen Timer der z.B. alle 40ms eine Methode aufruft, in der halt alles wichtige für den Spielablauf gemacht wird.
XNA sicher ein richtiges Stichwort. Auch wenn ich mich damit noch nicht näher beschäftigt habe, würde ich eher sagen ist das in diesem Fall mit Kannonen auf Spatzen geschossen.
MfG
Marco
-
wie ich in dem pong thread schon schrieb - du solltest dir auch mehr gedanken ueber die architektur machen
ich weiss nicht obs eine so gute idee ist direkt mit richtigen werten zu arbeiten
und auch - wozu n button als figur?
wenn du alles n bissl durchdacht designest - entsprechend kapselst und den objekten das handeln und ueberpruefen ueberlaesst - kommst du viel schneller und vor allem besser vorran
sonst bekommst du nur am ende spagetticode wenn du noch weitere objekte einbauen willst die auf die figur reagieren uswals erstes kommt die planung! - so wie das bisher aussieht ist es direkt zum scheitern verurteilt
zb
- was bedeutet X und Y?
- welchem objekt ist es zugeordnet?
- ist es eine groessenangabe - eine richtung oder was?
- was bedeutet 370 oder 420?
- wo ist die spielfigur?
- wo wird diese bewegt?
- wo ist das spielfeld?
- ...das koennte man endlos weiter fuehren - und nu stell dir vor du willst in deiner welt noch weitere 20 verschiedene objekte einbauen welche unterschiedlich auf die figur reagieren
wenn du dann noch etwas aendern oder variabel machen moechtest - such ma die entsprechenden stellenwie weit ist dein pong eigentlich? ein jump&run ist evtl noch n bissl zuviel fuer dich - versuch das pong doch erstma richtig zu designen
-
Ich habe mir jetzt diesen "Artikel" angeschaut, aber ich habe ihn nicht ganz verstanden.....
Da steht, dass ich Flags setzten kann um Tastenkombinationen oder so zu machen, aber da steht nicht wie ich sie nach dem setzten wieder löse.
Habe XNA downgeloadet kenne mich damit aber überhauptnicht aus.. xDUm ein Spielwelt bewegen zu lassen muss ich alle Elemente schon während dem Programmieren versteckt im Fenster lassen. Und erst wenn es beötigt wird auf Show() gehen?
Währe nämlich ziemlich schwierig wenn soviele Buttons übereinander sind.mfg Mongole
-
wieso zum geier denn staendig nur buttons ????
-
Mr Evil schrieb:
wieso zum geier denn staendig nur buttons ????
Hehe das fragte ich mich gerade auch
Um nur mal fix ne Idee zu testen kann man das ja mal machen.
Lieber Wandernder Mongole, nimm dir das was Mr Evil dir weiter oben beschrieben hat mal zu Herzen. Ausserdem würde ich dir empfehlen mal ein Grundlagen-Buch durch zu lesen, das Buch was ich dir weiter oben gelinkt habe ist ein recht guter Einstieg. Du brauchst ja nicht alle 31 Kapziel lesen, die ersten 5 Kapitel beinhalten die Grundlagen der Objektorientierten Progarmmierung mit C#.
Das was du momentan machst, im Designer wild rumklicken und wahllos irgendwo Code einfügen wird dich auf Dauer nicht weiter bringen. Dasselbe wird dir auch bei XNA passieren du klickst dir schön deine bunte Welt zusammen und stehst hinterher vor 5000 Zeilen Code und weist nicht mehr was du wo zu ändern hast.
MfG
Marco
-
Mein Ping Pong ist fertig^^
Auf die Frage warum immer mit Buttons gibt es eine einfache Antwort:
Womit sonst? Label? RadioButtons?
Du has mir gesagt mit Ellipsen und so und reklystelirgendwas.
Aber ich habe das zweite nicht gefunden. Die Ellipse hätte ich mit einer DrawMethode mahcen müssen oder?Das sind alles Betas zum Üben ich kombiniere das irgendwann.
Zu deinen Aufgezählten punkten. Das habe ich mir auch schon überlegt:
- was bedeutet X und Y? //Entweder die Kordinaten oder die Abstände der bewegten "Pixel(?)"
- welchem objekt ist es zugeordnet? Dem Button1
- ist es eine groessenangabe - eine richtung oder was? Es ist die Geschwindigkeitsangabe und die Locationasangabe.
- was bedeutet 370 oder 420? Sind Die Randkoordinaten des Feldes.
- wo ist die spielfigur? Wo sie halt startet. In meinem Fall der Button in der Mitte.
- wo wird diese bewegt? In der ganzen Form.
- wo ist das spielfeld? Alles sichtbare im Programm außer am Rand.Ich habe eh nochmal im Pong Thema nachgefragt was du mit Reckliwas meinst, aber ich habe bis jetzt noch keine Antwort bekommen und im Visual C# Studio danach gesucht, aber auch nichts gefunden.
Desswegen alles mit Buttons.mfg
Wandernder Mongole
-
Wandernder Mongole schrieb:
Du has mir gesagt mit Ellipsen und so und reklystelirgendwas.
Hehe er meinte Rectangle zu deutsch Rechteck, findet sich alles im Namespace System.Drawing !
Wandernder Mongole schrieb:
Auf die Frage warum immer mit Buttons gibt es eine einfache Antwort:
Womit sonst? Label? RadioButtons?Warum nicht Bitmaps, JPEG's, GIF's oder einfache geometrosche Formen selbst zeichnen?
Schau dir mal GDI+ an.MfG
Marco
-
ja okay.
So wäre es besser....
Ich kenne nur die einzige Option bilder anzeigen zu lassen als eine picturebox.Ich habe Buttons genommen weil ich sonst nichts anderes konnte......
Hbae damit angefangen.
Bin grad im Grundkurs beim letzten Kapitel "Windows Anwendungen : Grafik"
Da glaube ich kommt das vor^^Ping Pong funktioniert jetzt und bewegt sich auch immer unterschiedlich schnell.
Prallt nur dauernd gleich von der Wand ab.....Ich werde jetzt versuchen mit rechtecken und Ellipsen zu arbeiten^^
Ich schreibe immer meine Antwort und dann habt ihr scho was gschrieben^^
Deswegen passt es meistens net zum vorigen Post....mfg
Mongole