Einzelnen Beitrag anzeigen

OMEGA

Registriert seit: 19. Jun 2006
5 Beiträge
 
#7

Re: Ball soll abprallen!

  Alt 21. Jun 2006, 21:55
Hier ist der ganze Quelltext.

Delphi-Quellcode:
var
  Form1: TForm1;
  Stop:boolean=false;
  balken1mitte,balken1breite, balken2mitte,balken2breite: integer;
  loeschcolor,ballcolor,balken1color,balken2color:Tcolor;
  x,y:integer;

implementation

{$R *.dfm}

procedure TForm1.BeendenClick(Sender: TObject);
begin
stop:=true;
close;
end;

procedure TForm1.Start1Click(Sender: TObject);
var bx,by,s:integer;

begin
    randomize;
    stop:=false;

    //Ball
    x:=form1.PaintBox1.width div (random(3)+2);
    y:=form1.PaintBox1.Height div(random(3)+2);
    bx:=random(3)+2;
    by:=random(3)+2;

    //Balken 1
    balken1breite:=80;
    balken1mitte:=form1.PaintBox1.Height div 2;

    //Farben wählen
    loeschcolor:=form1.PaintBox1.color;
    ballcolor:= clwhite;
    balken1color:= clgreen;

    //Zähler
    s:=0;
    Anzahl.Caption:='Anzahl:' + inttostr(s);
    Anzahl.height:=25;
    Anzahl.Width:=100;

    repeat
// malen
      //Ball
      form1.PaintBox1.Canvas.pen.color:=ballcolor;
      form1.PaintBox1.Canvas.brush.color:=ballcolor;
      form1.PaintBox1.canvas.ellipse(x-15,y-15,x+15,y+15);
      //Balken 1
      form1.PaintBox1.canvas.pen.color:=balken1color;
      form1.PaintBox1.canvas.brush.color:=balken1color;
      form1.PaintBox1.canvas.rectangle(5,balken1mitte-balken1breite,25,balken1mitte+balken1breite);
      //warten
      sleep(4);
//übermalen
      // Ball
      form1.PaintBox1.canvas.pen.color:=loeschcolor;
      form1.PaintBox1.canvas.brush.color:=loeschcolor;
      form1.PaintBox1.canvas.rectangle(x-15,y-15,x+15,y+15);
      // Balken 1
      form1.PaintBox1.canvas.pen.color:=loeschcolor;
      form1.PaintBox1.canvas.brush.color:=loeschcolor;
      form1.PaintBox1.canvas.rectangle(5,balken1mitte-balken1breite,25,balken1mitte+balken1breite);
//neue Ballposition
      x:=x+bx;
      y:=y+by;

//abprallen
      //ball am rechten rand
      if (x> form1.PaintBox1.clientwidth-15)
          or (x<15)
      then
      begin
        bx:=-bx
      end;

      //balken
   if (x-15 <= 25)
      then
      begin
           if (y>balken1mitte-balken1breite)
           and (y<balken1mitte+balken1breite)
       then
          begin
          bx:=-bx+1; // Beschleunigung und richtungsänderung
          by:=by+1; // Beschleunigung
          s:=s+1; // anzahl +1
          Anzahl.caption:='Anzahl:' + inttostr(s);
          Anzahl.height:=25;
          Anzahl.Width:=100;
          end
       else
         begin x:=form1.PaintBox1.width div 2;
               y:=form1.PaintBox1.Height div 2;
               bx:=random(3)+2;
               by:=random(3)+2;
               showmessage('Du hast '+inttostr(s)+' Ballwechsel geschafft!');
               s:=0;
               Anzahl.Caption:='Anzahl:' + inttostr(s);
               Anzahl.height:=25;
               Anzahl.Width:=100;
        end;
        if(s>=10)
        then
                begin form1.PaintBox1.canvas.pen.color:=clyellow;
      form1.PaintBox1.canvas.brush.color:=clred;
      form1.PaintBox1.canvas.rectangle(200,300,300,400);
      end;


Hier gehts nicht weiter



         // oben und unten
   if (y+15 > form1.PaintBox1.clientheight)
         or (y-15 < 0)
      then
       begin
        by:=-by
       end;

      application.ProcessMessages;
    until stop=true;

end;
Das wars dann eigentlich

[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen, danke. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat