Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

Delphi: Das Spiel

Tommy22 / 11 Antworten / Flachansicht Nickles

Hab vor wenigen Wochen mit dem Programmieren eines Spiels begonnen. Es handelt sich um eine Art Breakball/Pong und funktioniert auch soweit ganz gut, jedoch gibt es da noch 2 Probleme:

Problem 1:
Ich brauche einen Zähler, der bei 10 anfängt und für jeden verlorenen Ball um 1 verringert wird. Das Problem ist, dass 10 lediglich der Startwert ist und keine Konstante sein soll, entweder er bleibt immer auf 10 oder er springt zwischen 9 und 10 hin und her.

Problem 2:
Wenn der Ball am Paddle vorbeifliegt soll eine neue Runde beginnen, dabei darf aber nicht das ganze Programm resettet werden, stattdessen soll lediglich kurz unterbrochen werden und der Ball soll wieder ins Feld kommen.

Allzu kompliziert darf/kann die Lösung ja nicht sein, da wir ja nicht allzu komplex arbeiten, das Spiel funktioniert über ein begrenztes Panel und einem beweglichen Image als Ball und einem Shape als Paddle, welches per Maus gesteuert wird.

Hey Dr. Kleiner - Ja Gordon? - Guck mal! Ist das nicht ne schöne Brechstange!? Fass sie mal an!
bei Antwort benachrichtigen
Tommy22 Borlander „Problem 1 liest sich für mich so als ob Du eine lokale Variable verwendet...“
Optionen

Hier nun mal ein Ausschnitt:

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
vx:=-20+Random(40);
vy:=-20+Random(40);
Panel1.DoubleBuffered:=true;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Left:=Image1.Left+vx;
Image1.Top:=Image1.Top+vy;
if(Image1.Left<Panel1.Left)
then vx:=vx*-1;
if (Image1.Top<Panel1.Top) OR (Image1.Top>Panel1.Height-Image1.Height-1)
then vy:=vy*-1;
mid:=Image1.BoundsRect.BottomRight;
mid.y:=mid.y-Image1.Height DIV 2;
if PtInRect(Shape1.BoundsRect, mid) then
vx:=vx*-1;
if PtInRect(Shape1.BoundsRect, mid) then
hit_counter:=hit_counter+1;
Label1.Caption:=IntToStr(hit_counter);
end;



procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
begin
move:=true;
mouse_y:=Y;
end
end;

procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X, Y:
Integer);
begin
if move then Shape1.Top:=Shape1.Top-(mouse_y-Y);
end;


procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move:=false;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

Hey Dr. Kleiner - Ja Gordon? - Guck mal! Ist das nicht ne schöne Brechstange!? Fass sie mal an!
bei Antwort benachrichtigen