Einzelnen Beitrag anzeigen

AlphaRage

Registriert seit: 11. Dez 2010
5 Beiträge
 
#1

Programm Billard. Verbeserungsvorschläge?

  Alt 12. Dez 2010, 00:00
Hallo.

Seit ca. 2 Monaten programmieren wir im Informatik-Unterricht mit Delphi. Meine Erfahrung damit ist also noch nicht so hoch.
Unser zweites Projekt, Billard genannt, bereitet mir da schon ein paar Probleme. Habe mich vor ein paar Stunden mal dran gesetzt und probiert.
Ich habe bisher die beiden Units 'mKugel' und 'mTisch' geschrieben. Außerdem das Hauptprogramm 'pBillard'.
Scheint auch alles richtig zu laufen. Kompilieren funktioniert, aber leider wird der Tisch einfach nicht gezeichnet. Die Kugel erkennt nur die Ränder des Tisches. Aber er ist unsichtbar. Ich bin mir sicher, dass ihr helfen könnt.
Außerdem hoffe ich auf Verbesserungsvorschläge!
Vielleicht nützt es zu wissen, dass ich in Delphi 6 programmiere.
Und bitte wundert euch nicht darüber, dass wir die Befehle in Deutsch schreiben. Mir wäre es von Beginn an auch lieber gewesen, in Englisch zu schreiben. Finde es so nämlich ein wenig verwirrend.

Hier sind die Codes!

Delphi-Quellcode:
program PBilliard;

uses
  mSuM,
  mKugel,
  mTisch in 'mTisch.pas';

var
  hatBildschirm : Bildschirm;
  hatStift : Stift;
  hatTastatur : Tastatur;
  hatMaus : Maus;
  hatKugel : Kugel;
  hatTisch : Tisch;

begin
  hatBildschirm:=Bildschirm.init;
  hatStift:=Stift.init;
  hatTastatur:=Tastatur.init;
  hatMaus:=Maus.init;
  hatKugel:=Kugel.init(500,200,200,0.05,5,40);
  hatTisch:=Tisch.init(40,40,800);


repeat
 hatKugel.bewege;
until hatMaus.istGedrueckt;


  hatStift.gibFrei;
  hatBildschirm.gibFrei;
  hatTastatur.gibFrei;
  hatMaus.gibFrei;
  hatKugel.gibFrei;
end.
Delphi-Quellcode:
unit mKugel;

interface

uses mSuM;

type Kugel = class

private

zFarbe: ganzeZahl;

zX: Zahl;
zY: Zahl;
zGeschwindigkeit: Zahl;
zRichtung: Zahl;
zGroesse: Zahl;

hatStift: Buntstift;

public

constructor init (pFarbe: ganzeZahl ; pX, pY, pGeschwindigkeit, pRichtung, pGroesse: Zahl);
procedure zeichne;
procedure loesche;
procedure bewege;
procedure setzeRichtung (pRichtung: Zahl);
procedure setzeGroesse (pGroesse: Zahl);
procedure setzeFarbe (pFarbe: ganzeZahl);
procedure setzeGeschwindigkeit (pGeschwindigkeit: Zahl);
function gibX: Zahl;
function gibY: Zahl;
function gibRichtung: Zahl;
destructor gibFrei;

end;

implementation

constructor kugel.init (pFarbe: ganzeZahl ; pX, pY, pGeschwindigkeit, pRichtung, pGroesse: Zahl);
begin
   hatStift:= Buntstift.init;
   zX:= pX;
   zY:= pY;
   zFarbe:= pFarbe;
   zGroesse:= pGroesse;
   zGeschwindigkeit:= pGeschwindigkeit;
   zRichtung:= pRichtung;
   hatStift.setzeFarbe (zFarbe);
   hatStift.hoch;
   hatStift.bewegeBis (zX,zY);
   hatStift.dreheUm (zRichtung);
   hatStift.runter;
   hatStift.setzeFuellmuster (gefuellt);
end;



procedure kugel.zeichne;
begin
   hatStift.zeichneKreis (zGroesse);
end;



procedure kugel.loesche;
begin
   hatStift.radiere;
   self.zeichne;
   hatStift.normal;
end;



procedure kugel.bewege;
begin
   self.loesche;
   hatStift.hoch;
   hatStift.bewegeUm (zGeschwindigkeit);
   hatStift.runter;

   if (hatStift.hPosition <= 85) or (hatStift.hPosition >= 795)
      then self.setzeRichtung (180-zRichtung);

   if (hatStift.vPosition <= 85) or (hatStift.vPosition >= 795)
      then self.setzeRichtung (360-zRichtung);

   self.Zeichne;
end;



procedure Kugel.setzeRichtung(pRichtung: Zahl);
begin
   hatStift.dreheBis (pRichtung);
   zRichtung:= pRichtung;
end;



procedure Kugel.setzeGroesse(pGroesse: Zahl);
begin
   zGroesse:= pGroesse;
end;



procedure Kugel.setzeFarbe(pFarbe: ganzeZahl);
begin
  zFarbe:= pFarbe;
end;



procedure Kugel.setzeGeschwindigkeit(pGeschwindigkeit: Zahl);
begin
   zGeschwindigkeit:= pGeschwindigkeit;
end;



function kugel.gibX;
begin
   result:= hatStift.hPosition;
end;



function kugel.gibY;
begin
   result:= hatStift.vPosition;
end;



function kugel.gibRichtung;
begin
   result := hatStift.Winkel;
end;



destructor Kugel.gibFrei;
begin
   self.loesche;
   hatStift.gibFrei;
end;


end.
Delphi-Quellcode:
unit mTisch;

interface

uses mSuM;

type Tisch = class

private

zhT, zvT, zLaenge: ganzeZahl;

hatStift: Buntstift;

public

constructor init(phT, pvT, pLaenge: ganzeZahl);
procedure zeichne;
procedure loesche;
function gibRechterRand: Zahl;
function gibLinkerRand: Zahl;
function gibObererRand: Zahl;
function gibUntererRand: Zahl;
destructor gibFrei;

end;


implementation
constructor tisch.init (phT, pvT, pLaenge: ganzeZahl);
begin
   hatStift:= Buntstift.init;
   zhT:= phT;
   zvT:= pvT;
   zLaenge:= pLaenge;
   hatStift.bewegeBis (zhT, zvT);
end;



procedure tisch.zeichne;
begin
   hatStift.normal;
   hatStift.zeichneRechteck (zLaenge, ZLaenge);
end;



procedure tisch.loesche;
begin

end;



function tisch.gibObererRand;
begin
   result:= zvT;
end;



function tisch.gibUntererRand;
begin
   result:= zvT + zLaenge;
end;



function tisch.gibRechterRand;
begin
   result:= zhT;
end;



function tisch.gibLinkerRand;
begin
   result:= zhT + zLaenge;
end;



destructor tisch.gibFrei;
begin
   self.loesche;
   hatStift.gibFrei;
end;



end.
[edit=Matze][code]- durch [delphi]-Tags ersetzt. MfG Matze[/edit]

Geändert von Matze (12. Dez 2010 um 08:49 Uhr)
  Mit Zitat antworten Zitat