Einzelnen Beitrag anzeigen

Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#16

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 9. Jan 2005, 22:27
damit weitermachen!
viel spass!

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TSpielfeld = class(TForm)
    Bild: TImage;
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  end;
    //type
    //tSpieler = class
    //x1,x2,y1,y2:Single;
    //farbe1:tColor;
    //procedure init(f1Neu:tColor;x1Neu,x2Neu,y1Neu,y2Neu:Single);
    //end;
type
  tBall = class
    x,y,vx,vy,r:Single;
    farbe:tColor;
    procedure init(fNeu:tColor;xNeu,yNeu,vxNeu,vyNeu,rNeu:Single);
    procedure ZeigeDich;
    procedure BewegeDich;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Spielfeld: TSpielfeld;
  ball:tBall;
  //spieler:tSpieler;
  punkt:integer = 0;
  BallimSpiel:boolean = false; // =true wenn ball im spiel ist!

implementation

{$R *.dfm}

procedure tBall.init(fNeu:tColor;xNeu,yNeu,vxNeu,vyNeu,rNeu:Single);
begin
  farbe:= fNeu;
  r:= rNeu;
  x:= xNeu;
  y:= yNeu;
  vx:= vxNeu;
  vy:=vyNeu;
end;

//procedure tSpieler.init(f1Neu:tColor;x1Neu,x2Neu,y1Neu,y2Neu:Single);
//begin
//farbe1:= f1Neu;
//x1:= x1Neu;
//x2:= x2Neu;
//y1:= y1Neu;
//y2:= y2Neu;
//end;

procedure tBall.ZeigeDich;
begin
  with Spielfeld.Bild.Canvas do
  begin
    brush.color:= clRed;
    ellipse(Round (x-r),Round(y-r),Round(x+r),Round(y+r))
  end;
end;

procedure tBall.BewegeDich;
begin
  x:=x+vx;
  y:=y+vy;
  //punkt:=0; hier nicht da sonst immer wieder auf null!
  with Spielfeld.Bild do
  begin
    if (x>width+r-1) then // + r damit er aus dem bild fliegt
    begin
      inc(punkt); // punkt +1
      Spielfeld.Label3.Caption:=IntToStr(punkt);
      BallimSpiel:=false; // es kann ein neuer ball gestartet werden
    end;
    if x<r+1 then
    begin
      x:=r+1;
      vx:=-vx
    end;
    if (y>height-r-1) then
    begin
      y:= height-r-1;
      vy:=-vy
    end;
    if y< r+1 then
    begin
      y := r+1;
      vy:= -vy
    end
  end
end;

procedure TSpielfeld.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    vk_space:
    begin
      if BallimSpiel then
        exit;
      with Bild.Canvas do
      begin
        brush.Color:= clWhite;
        rectangle(0,0,Bild.width,Bild.height);
        pen.width:=1;
        brush.style:=bsSolid;
        pen.Mode:= pmNOTXOR;
      end;
      BallimSpiel:=true;
      Ball.init(clWhite,100,200,5,5,15);
      Ball.ZeigeDich;
    end;
    vk_down: // "runtertaste gedrückt"
    begin
      // paddle bewegen
    end;
    vk_up: // "hochtaste gedrückt"
    begin
      // paddle bewegen
    end;
  end;
end;

procedure TSpielfeld.Timer1Timer(Sender:TObject);
begin
  if BallimSpiel then
  begin
    Ball.ZeigeDich;
    Ball.BewegeDich;
    Ball.ZeigeDich;
  end;
end;

procedure TSpielfeld.FormCreate(Sender: TObject); //zeichnen vom Spieler
begin
  with Bild.Canvas do
  begin
    brush.Color:= clBlue;
    rectangle(670,100,680,210);
    pen.width:=1;
    brush.style:=bsSolid;
    pen.Mode:= pmNOTXOR;
  end;
end;

initialization
  randomize;
  Ball:= tBall.Create;

Finalization
  Ball.Destroy

end.
  Mit Zitat antworten Zitat