Autor Beitrag
heaven
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 12.09.08 17:26 
Hallo!

wir sollen für die schule ein spiel programmieren.
Das spiel soll wie folgt aussehen:
es gibt einen ballon der von links nach rechts über den Bildschirm fliegt. Er ist durch die Pfeiltasten steuerbar (Höhe, schnelligkeit) und soll wolken einsammeln, die eine feste Position auf dem Bildschirm haben. Dafür gibt es Punkte.
Außerdem gibt es Vögel, die sich von rechts nach links über dem Bildschirm bewegen und den Ballon bei einem Zusammenstoß zum Absturz bringen.

Der SPieler hat 3 Leben, das Level ist beendet, wenn der Ballon die rechte Bildschirmseite berührt.
Danach werden die erreichten Punkte angezeigt und das nächste Level startet.


Unser erstes Problem ist jetzt, dass wir nie gelernt haben wie man ohne die Hilfsklassen aus mSum zeichnet, wir aber keinen Bildschirm initalisieren wollen, da wir mit Buttons (also auf der Form) arbeiten wollen.

Es wäre super, wenn uns jemand weiter helfen könnte!
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 12.09.08 17:34 
Hallo und :welcome: in der Entwickler-Ecke!

Für solche Kleinigkeiten nehme ich ganz gerne Shapes. Für den Anfang würde ich einen Timer und ein Shape au die Form packen. Den Timer z.B. auf 100ms, und ins OnTimer-Event das:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Shape1.Left := Shape1.Left + 1;
end;
Damit wandert das Shape weiter nach links.

Zur Steuerung mit den Pfeiltasten würde ich das OnKeyDown-Event der Form nehmen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    vk_Down: Shape1.Top := Shape1.Top + 2;
    vk_up: Shape1.Top := Shape1.Top - 2;
  end;
end;
Das so als Einstieg. ;-)

_________________
We are, we were and will not be.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 12.09.08 18:00 
Und für den Fall dass ihr tatsächlich zeichnen müsst: Nimm eine TPaintBox auf deine Form, und nutze die paintbox1.canvas - Eigenschaft zum malen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
{pb: TPaintbox;}
pb.canvas.brush.color := clRed;  // Füllfarbe bzw. Hintergrundfarbe
pb.canvas.pen.color := clBlue;  // Stiftfarbe
pb.canvas.pen.width := 3;  // Stiftbreite
pb.canvas.fillrect(pb.canvas.cliprect); // Mit Brushfarbe füllen / leeren(weiß)
pb.canvas.ellipse(10,10,110,110);  // Ellipse/Kreis in 2 Punkten (x,y,x,y)
pb.canvas.rectangle(10,10,110,110); // Rechteck
pb.canvas.moveto(50,50); // Stift ohne zu malen setzen
pb.canvas.lineto(100,100); // Stift mit malen verschieben (Linie malen)
pb.canvas.pixels[50,50] := clYellow; // Einzelnen Pixel setzen
if pb.canvas.pixels[50,50] = clGreen then // einzelnen Pixel abfragen
  dosomething;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
heaven Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 22.09.08 08:49 
erstmal dankeschön =)

aber irgendwie lässt sich das nicht mit den pfeiltasten steuern... Wenn wir die drücken, geht der nur auf die anderen Buttons. Das Bild bewegt sich nicht.
heaven Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 16.10.08 11:32 
Hi, also wir haben es jetzt geschafft, dass man den Ballon steuern kann. Nun ist unser problem, dass wir nicht wissen wie man es programmiert,dass wenn der Ballon über eine Wolke fliegt diese verschwindet und wenn der Ballon einen Vögel berührt, man ein Leben verliert.
Jeder Eintrag könnte uns weiterhelfen!
Danke im Voraus.
Jerk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 251

Vista Ultimate, Ubuntu
Turbo Delphi 2006
BeitragVerfasst: Do 16.10.08 14:20 
Naja ihr vergleichcht die Position des Ballons mit der der oder den Wolke/n an der Stelle wo auch die Bewegung stattfindet, also

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if 
(Wolke.Left in [Ballon.Left..Ballon.left + Ballon.Width]) 
and
(Wolke.Top in [Ballon.Top..Ballon.Top + Ballon.Height]) 
then
// juhuu wolke getroffen