AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Snake für die Schule programmieren,Pause;Highscoures einbaun
Thema durchsuchen
Ansicht
Themen-Optionen

Snake für die Schule programmieren,Pause;Highscoures einbaun

Offene Frage von "MarkusUhl"
Ein Thema von MarkusUhl · begonnen am 20. Jun 2006 · letzter Beitrag vom 18. Sep 2006
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    
MarkusUhl

Registriert seit: 20. Jun 2006
35 Beiträge
 
#1

Snake für die Schule programmieren,Pause;Highscoures einbaun

  Alt 20. Jun 2006, 20:28
Moin Leute ich bin ganz neu hier und habe ein paar Fragen.
Ich habe es mit meinen bescheiden Delphi Kenntnisse und den Tipps hier im Forum schon geschafft, eine schlange zu bauen, die sich verlängert und das spiel abbricht, wenn die wand oder seiner selbst berüht wird. nun mächte ich noch einne highscoure einbauen. Für jeden Punkt soll es 5 Punkte geben. Wie mache ich das am besten...?

Dann hätte ich gerne sowas wie eine Pause Funktion, dass das Spiel angehalten werden kann.

Wäre super, wenn ich ein paar Tipps bekommen könnte, wo ich da nachlesen kann oder wie die befehle lauten vielen Dank.

PS: Sorry aber ich bin wieder einer der typischen Deppen die bei so einem älteren Herrn Unterricht haben, der selbst keine Peilung hat und man sich so den ganzen kram selber beibringen muss. Kotz....

Danke euch für die Unterstüzung!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 20:31
Wie baust/bewegst du die Shclange. Läuft die Geschwindigkeit des Spielsvia Timer?
Ein bisschen QT wäre nich schlecht, Kristallkugel ist grad in Reperatur -.-
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
MarkusUhl

Registriert seit: 20. Jun 2006
35 Beiträge
 
#3

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 20:34
Ich hab mich ganz an das Beispiel hier im Forum gehalten... Jupp es läuft mit Timer:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

const
  farben: Array [0..2] of TColor=(clWhite, clLime, clRed);
  stufen: Array [0..2] of Cardinal=(200, 100, 50);
  raster = 7;
  breite = 65;
  hoehe = 45;

type
  TForm1 = class(TForm)
    Spielfeld: TPaintBox;
    Timer1: TTimer;
    BStart: TButton;
    BOben: TButton;
    BLinks: TButton;
    BRechts: TButton;
    BUnten: TButton;
    PEnde: TButton;
    procedure BStartClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BObenClick(Sender: TObject);
    procedure BLinksClick(Sender: TObject);
    procedure BRechtsClick(Sender: TObject);
    procedure BUntenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PEndeClick(Sender: TObject);
  private
    { Private-Deklarationen }
    map: Array [0..breite] of Array [0..hoehe] of Integer;
    kopf,
    richtung,
    futter: TPoint;
    laenge: Integer;
    ende,
    rand,
    gebissen: Boolean;
    procedure enable_buttons(status: Boolean);
    procedure spiel_ende;
    procedure neues_futter;
    procedure paint_map;
    procedure calc_snake;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.enable_buttons(status: Boolean);
begin
  BOben.Enabled := status;
  BRechts.Enabled := status;
  BLinks.Enabled := status;
  BUnten.Enabled := status;
end;

procedure TForm1.spiel_ende;
begin
  ende := True;
  Timer1.Enabled := False;
  enable_buttons(False);
  BStart.Enabled := True;
end;

procedure TForm1.neues_futter;
begin
  futter := Point(Random(breite), Random(hoehe));
  while map[futter.X, futter.Y]<>0 do
    futter := Point(Random(breite), Random(hoehe));
  map[futter.X,futter.Y] := -1;
end;

procedure TForm1.paint_map;
var
  i, j: Integer;
  col: TColor;
begin
  for i := 0 to breite do
    for j := 0 to hoehe do
    begin
      case map[i, j] of
        -1: col := farben[1];
         0: col := farben[0];
      else
        col := farben[2];
      end;
      Spielfeld.Canvas.Brush.Color:=col;
      Spielfeld.Canvas.FillRect(Rect(i*raster, j*raster, (i+1)*raster, (j+1)*raster));
    end;
end;

procedure TForm1.calc_snake;
var
  i, j: Integer;
begin
  for i := 0 to breite do
    for j := 0 to hoehe do
      if map[i, j]>0 then
        Dec(map[i, j]);
  Inc(kopf.X, richtung.X);
  Inc(kopf.Y, richtung.Y);
  if (kopf.X<0) or (kopf.X>breite) or (kopf.Y<0) or (kopf.Y>hoehe) then
  begin
    spiel_ende;
    ShowMessage('Nicht den Rand berühen!');
  end;
  if (map[kopf.X, kopf.Y]>0) and (not ende) then
  begin
    spiel_ende;
    ShowMessage('Nicht in den Schwanz beißen!');
  end;
  if (kopf.X=futter.X) and (kopf.Y=futter.Y) then
  begin
    Inc(laenge);
    neues_futter;
  end;
  map[kopf.X, kopf.Y] := laenge;
end;

procedure TForm1.BStartClick(Sender: TObject);
var
  i, j: Integer;
begin
  BStart.Enabled := False;
  for i:=0 to breite do
    for j:=0 to hoehe do
      map[i, j] := 0;
  kopf := Point(1, 1);
  laenge := 5;
  richtung := Point(0, 1);
  map[kopf.X, kopf.Y] := laenge;
  neues_futter;
  paint_map;
  enable_buttons(True);
  ende := False;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  calc_snake;
  if not ende then
    paint_map;
end;

procedure TForm1.BObenClick(Sender: TObject);
begin
  if richtung.Y=0 then
    richtung := Point(0, -1);
end;

procedure TForm1.BLinksClick(Sender: TObject);
begin
  if richtung.X=0 then
    richtung := Point(-1, 0);
end;

procedure TForm1.BRechtsClick(Sender: TObject);
begin
  if richtung.X=0 then
    richtung := Point(1, 0);
end;

procedure TForm1.BUntenClick(Sender: TObject);
begin
  if richtung.Y=0 then
    richtung := Point(0, 1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;

procedure TForm1.PEndeClick(Sender: TObject);
begin
halt;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 20:37
Die Punkte addierst du, wenn auch eine Kollision festgestellt wurde. Die Pause kannst du zb. Durch deaktivierung des Timers verursachen
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
MarkusUhl

Registriert seit: 20. Jun 2006
35 Beiträge
 
#5

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 20:44
letzteres kapiere ich noch.
Aber wie addieren. Wenn game over ist muss es doch angezeigt werden? Am besten in einem neuem fenster oder?
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 20:51
Du addierst immer wenn eine Kollision nit Futter stattfindet auf eine Variable (sowas wie 'Score') 5 hinzu. Wenn das spiel zuende ist kannst du ja mit einer MessageBox oder Label die Punktezahl/Highscores anzeigen lassen
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
MarkusUhl

Registriert seit: 20. Jun 2006
35 Beiträge
 
#7

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 20:53
Das hab ich verstanden, nur die umstetzung!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 20:57
Delphi-Quellcode:
  if (kopf.X=futter.X) and (kopf.Y=futter.Y) then
  begin
    Punkte:=Punkte+5;
    Inc(laenge);
    neues_futter;
  end;
Und dann
Delphi-Quellcode:
procedure TForm1.spiel_ende;
begin
  ende := True;
  Timer1.Enabled := False;
  enable_buttons(False);
  BStart.Enabled := True;
  ShowMessage('Du hast '+IntToStr(Punkte)+' Punkte erreicht);
end;
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
MarkusUhl

Registriert seit: 20. Jun 2006
35 Beiträge
 
#9

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 21:00
Danke werd es gleich einbauen. Bin noch an der Pause. Wie bekomme ich den Button weg.

TForm1.PauseClick.Visible:=False; klappt net, der Button heißt Pause- du merkst ich bin ein Noob^^
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Snake für die Schule programmieren,Pause;Highscoures ein

  Alt 20. Jun 2006, 21:01
Ohne das T vor TForm^^
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    


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 13:41 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