AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Programmcode von Snake in Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Programmcode von Snake in Delphi

Ein Thema von Apona · begonnen am 12. Feb 2009 · letzter Beitrag vom 16. Feb 2009
Antwort Antwort
Seite 1 von 3  1 23      
Apona
(Gast)

n/a Beiträge
 
#1

Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:13
Hier ist der Programmcode von dem Snake. ( Habe Ihn per google gefunden). Ich habe keine Idee warum er bei der Deklaration mosert

Delphi-Quellcode:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  Trichtung = (Hoch,Runter,Links,Rechts);
 
  TSpielfeld = class(TForm)
    Bild: TImage;
    Timer1: TTimer;
    Panel1: TPanel;
    Label1: TLabel;
    m_start: TMemo;
    l_start: TLabel;
    b_start: TButton;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure b_startClick(Sender: TObject);
    end;
 
 tsnake = class
  x,y:array[1..100] of integer;
  vx,vy,r,laenge:integer;
  farbe:tcolor;
  richtung:trichtung;
  procedure init(fneu:tcolor; xneu, yneu, vxneu, vyneu, rneu:integer);
  procedure zeigedich;
  procedure bewegedich;
  procedure wachsen;
  end;
 
 tapfel = class
  x,y,r,score:integer;
  farbe:tcolor;
  procedure ini; overload;
  procedure ini(fneu:tcolor; xneu, yneu, rneu:integer); overload;
  procedure zeigediche;
  procedure fressen;
  end;
 
 
var
  Spielfeld: TSpielfeld;
   snake : Tsnake;
   apfel : Tapfel;
   big : bool;
implementation
 
{$R *.dfm}
 
 
// -------------------------------------------------------------------------- //
// alle Prozeduren, die ausschließlich mit "Snake" zu tun haben
// -------------------------------------------------------------------------- //
procedure tsnake.init(fneu:tcolor; xneu, yneu, vxneu, vyneu, rneu:integer);
begin
  laenge:= 1;
  farbe:= fneu;
  x[laenge] := xneu;
  y[laenge] := yneu;
  vx := vxneu;
  vy := vyneu;
  r := rneu;
 
end;
 
procedure tsnake.zeigedich;
var i:integer;
begin
  Spielfeld.Bild.Canvas.Brush.Color:=Farbe;
  for i:=1 to snake.laenge do
  begin
  Spielfeld.Bild.Canvas.Rectangle(x[i], y[i], x[i]+2*r, y[i]+2*r);
  end;
end;
 
procedure tsnake.bewegedich;
begin
 
  case snake.richtung of
  Links: begin //Links
    snake.vx:=-1;
    snake.vy:= 0;
    end;
 
Hoch: begin //Hoch
    snake.vx:= 0;
    snake.vy:= -1;
    end;
 
Rechts: begin //Rechts
    snake.vx:= 1;
    snake.vy:= 0;
    end;
 
Runter: begin //Runter
    snake.vx:= 0;
    snake.vy:= 1;
    end;
  end;
 
  //Bewegungsberechnung
  x[1] := x[1] + 2*r*vx;
  y[1] := y[1] + 2*r*vy;
 
  if (x[1]>Spielfeld.Bild.Width-2*r) then
  begin
    x[1] := 0;
  end;
 
  if x[1]<0 then
  begin
    x[1] := Spielfeld.Bild.Width-2*r;
   end;
 
  if (y[1] > Spielfeld.Bild.Height-2*r) then
  begin
    y[1] := 0;
  end;
 
  if y[1] < 0 then
  begin
    y[1] := Spielfeld.Bild.Height-2*r;
  end;
 
end;
 
//wachsen
procedure Tsnake.wachsen;
var i:integer;
begin
laenge:= laenge +1;
spielfeld.Label2.Caption:='Länge : ' + inttostr(laenge);
//Array erweitern
for i:=1 to laenge do
  begin
  x[i+1]:=x[i];
  y[i+1]:=y[i];
  Spielfeld.Bild.Canvas.Rectangle(x[i], y[i], x[i]+2*r, y[i]+2*r);
 
 
  end;
end;
 
procedure TSpielfeld.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
27:close;
 
37: begin //Links
    if snake.richtung <> Rechts then snake.richtung:=Links;
    end;
38: begin //Hoch
    if snake.richtung <> Runter then snake.richtung:=Hoch;
    end;
39: begin //Rechts
    if snake.richtung <> Links then snake.richtung:=Rechts;
    end;
40: begin //Runter
    if snake.richtung <> Hoch then snake.richtung:=Runter;
    end;
end;
end;
 
// -------------------------------------------------------------------------- //
// Alle Prozeduren, die ausschließlich mit "Apfel" zu tun haben
// -------------------------------------------------------------------------- //
 
procedure tapfel.ini;
begin
  farbe:= clGreen;
  x := Random(30)*20;
  y := Random(20)*20;
  r := 10;
end;
 
procedure tapfel.ini(fneu:tcolor; xneu, yneu, rneu:integer);
begin //
  farbe:= fneu;
  x := xneu;
  y := yneu;
  r := rneu;
end;
 
 
procedure tapfel.zeigediche; //
begin
  Spielfeld.Bild.Canvas.Brush.Color:=clGreen;
  Spielfeld.Bild.Canvas.ellipse(x, y, x+2*r, y+2*r);
end;
 
procedure tapfel.fressen;
begin
 
if (x = snake.x[1]) and (y = snake.y[1]) then
 
    begin
      score:= score +1;
      spielfeld.label1.caption:='Score : ' + inttostr(score);
      apfel.zeigediche;
      apfel.ini;
      apfel.zeigediche;
      big:= true;
    end;
end;
// -------------------------------------------------------------------------- //
// Durch diese Prozedur wird das Spiel gestartet und der Anfangsbildschirm ausgeblendet
// -------------------------------------------------------------------------- //
procedure TSpielfeld.b_startClick(Sender: TObject);
begin
l_start.Visible:=false;
b_start.Visible:=false;
m_start.Visible:=false;
panel1.Visible:=true;
bild.Visible:=true;
end;
 
// -------------------------------------------------------------------------- //
// Diese Prozedur bringt die Bewegungs- und Fressprozeduren in Gang(regelmäßig
// -------------------------------------------------------------------------- //
 
procedure TSpielfeld.Timer1Timer(Sender: TObject);
begin
//spielfeld.Timer1.Enabled:=false;
 
                   //
snake.zeigedich;
snake.bewegedich;
snake.zeigedich;
apfel.fressen;
if big = true then
begin
snake.wachsen;
big:= false;
end;
//spielfeld.Timer1.Enabled:=true;
end;
 
// -------------------------------------------------------------------------- //
// Alles was von Anfang an existieren soll ist hier aufgeführt
// -------------------------------------------------------------------------- //
 
procedure TSpielfeld.FormCreate(Sender: TObject);
begin //
  with bild.Canvas do
  begin
  pen.Width:=5;
  Brush.Color:=clWhite;
  Brush.Style:=bsSolid;
  Pen.Width:=2;
  Pen.Mode:=pmNOTXOR;
 
  Rectangle(0,0,Bild.width,Bild.Height);
  end;
 
  snake.init(clRed, Random(30)*20, Random(20)*20,0,0,10);
  snake.zeigedich;
  apfel.ini;
  apfel.zeigediche;
end;
 
initialization //
  randomize;
  snake := tsnake.Create;
  apfel := tapfel.Create;
  big:= false;
end.
[edit=Luckie]Delphi-Tags eingefügt. beim nächsten mal bitte selber machen. Mfg, Luckie[/edit]


ok werde es dann machen
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#2

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:15
Ok,

Grundsätzlich gehören Quellcodes in -Tags. Dann werden so große Listings meist als *.pas-Datei angehängt. Und dann fehlt noch die Fehlermeldung. Die Glaskugel hat heute frei.
米斯蘭迪爾
  Mit Zitat antworten Zitat
Apona
(Gast)

n/a Beiträge
 
#3

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:16
ok dann weiß ich das fürs nächste mal. Fehlermeldung kommt sofort
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:16
Welche Deklaration und was heißt "meckern"? Mein Delphi gibt Fehlermeldungen aus, kann aber nicht meckern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#5

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:20
@Luckie:

@Apona: Denk auch daran, dass du bei jedem deiner Beiträge einen Button namens "Edit" hast. Der ist nicht nur zur Zierde, sondern dient dazu, Informationen zu deinen Beiträgen nachträglich hinzuzufügen. Das ist hier kein Chat.
米斯蘭迪爾
  Mit Zitat antworten Zitat
Apona
(Gast)

n/a Beiträge
 
#6

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:25
Luckie: Quellcode entfernt.

also er nimmt die Variablen nicht an

Delphi-Quellcode:
tapfel = class
  x,y,r,score:integer;
irgend was mit dem , hat er

[edit=Luckie]Quellcode siehe oben. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:32
Warum um Gottes Willen noch mal die 300 Zeilen Code? Und was heißt "nimmt nicht an"? Es kann doch nicht so schwer sein die genaue Fehlermeldung von Delphi hier rein zu kopieren?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Apona
(Gast)

n/a Beiträge
 
#8

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:33
das mit dem Code tut mir leid, wollte den Beitrag eigendlich editieren. Der Fehlercode kommt. Musste Delphi eben schnell neuinstalieren. 2 Mins noch bitte
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#9

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:34
Weil du Sie (die Variablen) doppelt verwendest!

Delphi-Quellcode:
tsnake = class
  x,y:array[1..100] of integer;
  vx,vy,r,laenge:integer;
  farbe:tcolor;
...

tapfel = class
  x,y,r,score:integer;
  farbe:tcolor;
versuchs mal mit


Delphi-Quellcode:
tapfel = class
  x,y,r,score:integer; overload;
  farbe:tcolor; overload;
Bin mir da aber gerade nicht ganz sicher. Achso, du brauchst nicht jedes Mal zu schreibene, das wir noch 2 Minuten warten sollen, Antworte einfach 2 Minuten später
  Mit Zitat antworten Zitat
Apona
(Gast)

n/a Beiträge
 
#10

Re: Programmcode von Snake in Delphi

  Alt 12. Feb 2009, 17:50
mal ne andere Frage. Hat Delphi 7 Probleme mit Windwos Vista?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz