Labyrinth (Spiel) programieren

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
jerry_cotton
Beiträge: 5
Registriert: Mo 6. Aug 2012, 17:04

Labyrinth (Spiel) programieren

Beitrag von jerry_cotton »

Hi Leute,
ich hab ein kleine Problem.
In meinem Informatik Kurs soll ich ein Spiel programmieren und der Lehrer möchte, das ich das mit Lazarus mache. Ich habe aber leider wenig Kenntnisse vom Programmieren.
Ich möchte ein kleines Labyrinth programmieren, durch das sich ein Punkt/Männchen bewegt.
Deswegen:

-wie kann ich Objekte in Lazarus "erschaffen"?

- wie kann ich Bilder/Objekte mit Pfeiltasten bewegen?

- wie kann ich "Mauern" erschaffen und bewirken das man da nicht durch gehen kann?

Es wäre schön wenn jemand, der Erfahrung mit Lazarus hat, mir helfen könnte

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Labyrinth (Spiel) programieren

Beitrag von theo »

Hat euch euer Lehrer denn gar nichts beigebracht?
Dann kann er aber sowas auch nicht verlangen. Da würde würde ich mal mit dem Lehrer ein ernstes Wörtchen reden. :wink:

jerry_cotton
Beiträge: 5
Registriert: Mo 6. Aug 2012, 17:04

Re: Labyrinth (Spiel) programieren

Beitrag von jerry_cotton »

Erstes Wörtchen geht leider nicht. Wurde schon versucht. Außer schlechten Noten ergibt sich da nichts. Mann muss halt versuchen den Aufgaben gerecht zu werden. Hast du ein paar Tips für das Programm?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Labyrinth (Spiel) programieren

Beitrag von theo »

jerry_cotton hat geschrieben:Hast du ein paar Tips für das Programm?


Naja, "für das Programm" ist es vielleicht noch ein bisschen zu früh.
Erstmal ein Grundlagenbuch lesen?
Vllt hier: http://www.amazon.de/Lazarus-Arbeiten-m ... 393654638X
Auch die unter "Kunden, die diesen Artikel gekauft haben, kauften auch" sind vllt. geeignet.

Oder Online z.B. hier: http://www.marcocantu.com/epascal/
Googeln hilft evtl. auch.

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Labyrinth (Spiel) programieren

Beitrag von Heinrich Wolf »

Hallo Jerry Cotton,

fang doch mal mit einem rechteckigen

Code: Alles auswählen

Array[0 .. XMax, 0 .. YMax] of Byte;
an. Darin speicherst Du die Bausteine:

Code: Alles auswählen

const 
  Leer = 0;
  Mauer = 1;
  Maennchen = 2;

Das Array repräsentiert Dein Spielfeld. Du zeichnest es auf ein TImage, gesteuert vom Array Inhalt. Dann kannst Du Dir die Ereignisse des TImage und des TForm ansehen. Hilfreich sind TImage.MouseUp und TForm.KeyUp. Mit diesen Ereignissen kannst Du Dein Maennchen steuern.

Heiner

Benutzeravatar
didi
Beiträge: 46
Registriert: Mo 10. Mai 2010, 20:43
OS, Lazarus, FPC: Linux / Windows
CPU-Target: AMD 64-Bit
Wohnort: Plauen im Vogtland
Kontaktdaten:

Re: Labyrinth (Spiel) programieren

Beitrag von didi »

Um etwas über Pascal-Programmierung zu lernen würde ich Dir dringen von
"Free Pascal 2, Handbuch und Referenz" und "Lazarus, Arbeiten mit IDE und Klassenbibliothek" abraten.
Sie sind zum Lernen definitiv nicht gegeignet, sondern sehr gute Nachschlagewerke.
Zum Lernen würde ich "Jetzt lerne ich Delphi" oder "Delphi 5 lernen" empfehlen. Sicher sind beide
Bücher nun auch als Gebrauchtexemplare preisgünstig zu haben.
Was Dein Spiel betrifft: Wenn Du noch die Wahl hast, fang mit etwas ganz Einfachem an. :lol:
Bespiel: Zeige quadratisch 9 Bilder, sagen wir mal 30 Sekunden, an.
Zeige dann separat ein zufällig ausgewähltes Bild an und lasse raten, wo sich das Bild im Quadrat befindet.
Zeige eine kleine Auswertung. Glaube mir, selbst dieses recht einfache Beispiel ist für den Anfang ganz umfangreich,
da Du ja die Anzeigezeit und auch die Zeit für die Lösung variieren kannst. Die verdeckten Bilder musst Du natürlich per Zufall verteilen.

Gruß didi ><>

jerry_cotton
Beiträge: 5
Registriert: Mo 6. Aug 2012, 17:04

Re: Labyrinth (Spiel) programieren

Beitrag von jerry_cotton »

Danke für die Tipps. Ich werde mir wahrscheinlich tatsächlich ein Buch holen. Bis dahin aber muss ich mit euch arbeiten.

Danke Heinrich Wolf für den Code. Leider muss ich zu meiner Schande gestehen, dass ich KOMPLETTER Neuling bin. Könntest du deinen Code bitte erklären. Auch was du mit:
"Das Array repräsentiert Dein Spielfeld. Du zeichnest es auf ein TImage, gesteuert vom Array Inhalt. Dann kannst Du Dir die Ereignisse des TImage und des TForm ansehen."
meinst weiß ich nicht.
1. was ist ein array?
2. wie zeichne ich es auf ein TImage?
3. wie sehe ich mir die Ereignisse des TImages und der TForm an?
... (Alle Anderen Fragen ergeben sich von selbst, glaub ich)

Wie du siehst bin ich ziemlicher Newbie in Lazarus. Helft mir bitte bitte trotzdem.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Labyrinth (Spiel) programieren

Beitrag von theo »

Nee jerry_cotton, so läuft das nicht.
Du hast keine Sekunde aufgepasst in der Schule, sonst wüsstest du mindestens, was ein Array ist, das gibt es in ziemlich jeder Programmiersprache.

Lerne erst mal die Grundlagen, dann helfen wir dir gerne weiter, aber so hat das keinen Sinn.
Und deine Hausaufgaben macht hier (denke ich?) auch keiner für dich.

jerry_cotton
Beiträge: 5
Registriert: Mo 6. Aug 2012, 17:04

Re: Labyrinth (Spiel) programieren

Beitrag von jerry_cotton »

Ey, so ist das gar nicht. Ich bin der Klassenbeste. Hausaufgaben soll hier keiner für mich machen.
Außerdem ist der Kurs nur der Anreiz. Mit einem einfachen Bilderrätsel krieg ich auch so ne 2.
Ich möchte aber versuchen was besseres zu machen. Mehr zu lernen als der Kurs hergibt.
Vielleicht sollte ich erst sagen was wir in dem Kurs schon gemacht haben:
wir haben einen "Getränkeautomaten" programmiert. Einem Edit-Feld Strings zuordnen,
einfache If-Anweisungen und kurz mal in Variablen reingeschnuppert. Das ist alles.
Nach unserem Lehrer ist der nächste Schritt ein "Spiel"
Ein "wenn Button1 gedrückt wird mache Bild2 sichtbar"-Spiel kann ich auch.
Zur meiner Verteidigung: ich bin erst in der 9. Klasse
Vorher war das mit Webdesign das gleiche.
Während andere noch mit Schriftfarben rum experimentiert haben, hab ich schon mit Div-Containern und CSS gearbeitet.
Kurz:

Informatik ist mein Lieblingsfach und Hobby. Wenn du mir trotzdem keine Hilfe geben möchtest. Okay

An die anderen: ich kann nur auf die Fragen von oben verweisen.

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Labyrinth (Spiel) programieren

Beitrag von Heinrich Wolf »

jerry_cotton hat geschrieben:...
Danke Heinrich Wolf für den Code. Leider muss ich zu meiner Schande gestehen, dass ich KOMPLETTER Neuling bin. Könntest du deinen Code bitte erklären. Auch was du mit:
"Das Array repräsentiert Dein Spielfeld. Du zeichnest es auf ein TImage, gesteuert vom Array Inhalt. Dann kannst Du Dir die Ereignisse des TImage und des TForm ansehen."
meinst weiß ich nicht.
1. was ist ein array?
2. wie zeichne ich es auf ein TImage?
3. wie sehe ich mir die Ereignisse des TImages und der TForm an?
...

Ein array ist eine Variable für viele gleichartige Elemente, z.B. Bytes, auf die Du mit x und y Koordinate zugreifst. Du musst mit zwei for Schleifen Dein array abfragen und je nach Zahl ein passendes kleines Bildchen auf entsprechende x und y Koordinaten Deines TImage kopieren. Dazu gibt es z.B. Draw() in TImage.Canvas .

Mit "Ansehen" der Ereignisse meinte ich im Objektinspektor von Lazarus oder in dessen Hilfe.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Labyrinth (Spiel) programieren

Beitrag von theo »

Mach mal hier den Crashkurs,da siehst du auch was Arrays sind. Ist zwar für Delphi, geht aber mit Lazarus grösstenteils gleich.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Labyrinth (Spiel) programieren

Beitrag von pluto »

Ich nehme an, für die Schule musst du den Code 100% verstehen. Mein Lernansatz geht jedoch anders. Ich nehme das OOP Prinzip. Das heißt: Du musst nicht alles verstehen, dass kommt mit der Zeit. Wenn dir das Hilft, könnte ich dir schon weiter helfen. Jedoch müsstest du dann schon mitdenken.

Dein Spiel ist relativ leicht umzusetzen. Ich bin der Meinung, man muss nicht unbedingt mit ein Einfachen Projekt anfangen. Es geht auch mit einem Labyrinth Spiel.
Fürs Erste würde ich vorschlagen, da es ein Schul Projekt, mach dich über folgende Themen Schlau:
1. Canvas/TPaintBox/TImage
2. TPicture.
3. Kontrollstrukturen/Schleifen.
4. Datenstrukturen(array, 2D Array und soweiter)
5. OOP

Ich weise immer gerne auf diese Seite hier: http://www.dsdt.info/. ist zwar für Delphi, dass meiste gilt aber auch für Lazarus/FPC.
(Alle die Themen, findest auf auf der Seite., naja fast alle).

Und: Eins solltest du dir merken, nichts geht "eben schnell", alles braucht seine Zeit. Ich denke, du wirst wohl drei bis vier Wochen brauchen(Optimistisch geschätzt). Klar, geht ein Taschenrechner einfacher, aber da lernt man auch nichts.

Ich wünsche dir viel Erfolg. Ich könnte dir mal ein Beispiel zeigen, aber ich glaube das würde dir jetzt nicht weiter helfen, oder?
MFG
Michael Springwald

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Labyrinth (Spiel) programieren

Beitrag von af0815 »

Übrigens gibt es auch Lehrer die in Foren lesen :oops: Also immer schön aufpassen bei den Formulierungen der Fragen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Labyrinth (Spiel) programieren

Beitrag von carli »

af0815 hat geschrieben:Übrigens gibt es auch Lehrer die in Foren lesen :oops: Also immer schön aufpassen bei den Formulierungen der Fragen.

Jap. Vor allem Lehrer, die mit Lazarus arbeiten ;)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Labyrinth (Spiel) programieren

Beitrag von pluto »

Jap. Vor allem Lehrer, die mit Lazarus arbeiten

Wirklich? Das ist selten, ich kenne nur einen(Persönlich sogar). Vielleicht sollten wir die mal Kennzeichnen *G*.
Aber wir haben, die Eigentliche Frage aus den Augen verloren, oder kommt mir das nur so vor?
MFG
Michael Springwald

Antworten