AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilfe!
Thema durchsuchen
Ansicht
Themen-Optionen

Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilfe!

Ein Thema von leela · begonnen am 9. Jan 2005 · letzter Beitrag vom 12. Jan 2005
 
leela
(Gast)

n/a Beiträge
 
#1

Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilfe!

  Alt 9. Jan 2005, 01:33
Hallo!
Ich bin sehr froh, dass ich so ein tolles Forum gefunden hab. Ich hoffe ihr könnt mir helfen. Ich soll bis Mittwoch ein Projekt (irgendeins) in Delphi für die Schule machen. Das zählt wie meine 2. Klausur dieses Halbjahr.. (Also wichtig.)

Naja ich hab mich entschieden dieses altmodische Ping-Pong Spiel zu machen. Ich hab hier im Forum auch schon ein OpenSource Programm gefunden, aber ich möchte das natürlich nicht verwenden, weil ich das nicht gut finde. Ich möchte was selber machen und natürlich auch alles verstehen, was ich das geschrieben hab. Man könnte sagen, dass ich noch ein ziemlicher Anfänger bin...
Das Programm wollte ich vereinfachen.
Es gibt nur einen Spieler und der spielt den Ball eben gegen eine Wand.
Mein Lehrer hat mir ein Buch gegeben, wo Ballbewegung und sowas eben gut erklärt ist, aber teilweise versteh ich den Quelltext nicht und im Buch ist das auch nicht so gut erklärt. Ich hab das mal noch ein bisschen umgeändert.
Mein _momentanes_ Problem ist zur Zeit, dass der Ball hinter sich eine Spur zeichnet. Das soll er aber nicht und ich weiß ehrlich gesagt nicht, was ich ändern soll. Ich kopier einfach mal den Quelltext und schreib da meine Fragen direkt rein. Ist vielleicht am besten.

EDITIERT:

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;

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;
with Spielfeld.Bild do
  begin
  if (x>width-r-1) then
    begin
    punkt:=(punkt+1);
    Spielfeld.Label3.Caption:=IntToStr(punkt);
    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
  if key = vk_space then
    begin
    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;
end;

Ball.init(clWhite,100,200,5,5,15);
Ball.ZeigeDich;
end;

procedure TSpielfeld.Timer1Timer(Sender:TObject);
begin
Ball.ZeigeDich;
Ball.BewegeDich;
Ball.ZeigeDich;
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.
Ich hoffe ihr könnt mir helfen. Ich danke euch für jede Art von Hilfe. Ich werd jetzt ins Bett gehen. Mein Kopf platzt gleich. Heute Nacht gibt das bestimmt Alpträume!

Danke!
Angehängte Dateien
Dateityp: rar spiel_127.rar (165,2 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
 


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