Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
Ah okay, danke. Es funktioniert wenigstens, aber es zählt nur einmal. Muss da nur noch ne Schleife einbauen. Das mach ich dann aber wann anders. Wichtiger ist jetzt der Schläger...
Kannst du mir da helfen? |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
Mag mir wirklich niemand helfen?
Ich brauch wenigstens noch den Schläger... Habs schon probiert.. so ähnlich wie der Ball.. Aber er zeigt natürlich irgendwie ne Fehlermeldung an.. Hier hab ich den Spieler (Schläger) eben als Klasse definiert.. und ne Prozedur reingepackt mit den Variablen für die Eckpunkte.. Muss ich einen anderen Wert für die Punkte nehmen? integer ?
Delphi-Quellcode:
type
tSpieler = class x1,x2,y1,y2:Single; farbe1:tColor; procedure init(f1Neu:tColor;x1Neu,x2Neu,y1Neu,y2Neu:Single); end; Und hier dann die Prozedur aufgerufen...
Delphi-Quellcode:
Ich will dann den Spieler eben aufrufen mit
procedure tSpieler.init(f1Neu:tColor;x1Neu,x2Neu,y1Neu,y2Neu:Single);
begin farbe1:= f1Neu; x1:= x1Neu; x2:= x2Neu; y1:= y1Neu; y2:= y2Neu; end;
Delphi-Quellcode:
und ihn auch bewegen können.. Oder sollte ich das besser anders machen? WIE?
Spieler.init(color,x1,y1,x2,y2)
|
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
tu dir und uns bitte einen gefallen und formatiere deinen quellcode bitte, das macht das ganze leserlicher.
so etwa:
Delphi-Quellcode:
procedure ....
var a: boolean: ... begin a:= true; for i:= 1 to 10 do begin a:= false; if a then begin ... end else begin ... end; end; end; |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
moin,
init steht wohl für initiieren, mit anderen Worten diese Funktion setzt nur eine neue Farbe und neue Koordinaten... |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
Liste der Anhänge anzeigen (Anzahl: 1)
So hab den Quelltext formatiert...
Programm nochmal verändert.. Hab da noch ein paar Sachen als Kommentare geschrieben, weil das noch nicht funktioniert, aber könnt ihr euch ja mal angucken. Wie sollte ich denn am besten den Schläger da einbauen? |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
damit weitermachen!
viel spass!
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; BallimSpiel:boolean = false; // =true wenn ball im spiel ist! 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; hier nicht da sonst immer wieder auf null! with Spielfeld.Bild do begin if (x>width+r-1) then // + r damit er aus dem bild fliegt begin inc(punkt); // punkt +1 Spielfeld.Label3.Caption:=IntToStr(punkt); BallimSpiel:=false; // es kann ein neuer ball gestartet werden 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 case key of vk_space: begin if BallimSpiel then exit; 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; BallimSpiel:=true; Ball.init(clWhite,100,200,5,5,15); Ball.ZeigeDich; end; vk_down: // "runtertaste gedrückt" begin // paddle bewegen end; vk_up: // "hochtaste gedrückt" begin // paddle bewegen end; end; end; procedure TSpielfeld.Timer1Timer(Sender:TObject); begin if BallimSpiel then begin Ball.ZeigeDich; Ball.BewegeDich; Ball.ZeigeDich; end; 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. |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
Oh vielen Dank!
Damit kann ich gut weiterarbeiten.. Ich werd jetzt mal den Spieler programmieren.. Hatte heute wieder Informatik in der Schule und hab noch ein paar Tipps bekommen. Ich meld mich wieder. |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
Zitat:
air |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
So. Tja wie immer läuft nicht alles so, wie ich es gerne hätte. Mir fehlt eben das nötige Fachwissen...
Folgendes: Hab nun eine Prozedur für den Spieler geschrieben.. Also die zeichnet dann (hoffentlich) den Schläger ins Canvas. Jetzt muss ich diesen Schläger ja nur noch irgendwie aufrufen.. Also irgendwie ne FormCreate-Prozedur... Und wie sag ich dann "starte procedure spieler" ?
Delphi-Quellcode:
Und dann in der Prozedur, die den Schläger bewegen soll... da muss ich dann ja jeweils die y-Koordinaten ändern, um den Schläger zu bewegen.
procedure spieler;
begin with Spielfeld.Bild.Canvas do begin brush.Color:= clBlue; rectangle(x1,y1,x2,y2); pen.width:=1; brush.style:=bsSolid; pen.Mode:= pmNOTXOR; end; x1:=670; y1:=100; x2:=680; y2:=210; end;
Delphi-Quellcode:
Da zeigt er mir dann folgende Fehlermeldungen :vk_down: // "runtertaste gedrückt" begin with Spielfeld.spieler do // paddle bewegen <- DA FEHLER begin y1:=y1-10; y2:=y2-10; end; end; [Fehler] Unit1.pas(152): Record, Objekt oder Klassentyp erforderlich [Fehler] Unit1.pas(20): Ungenügende Forward- oder External-Deklaration: 'TSpielfeld.spieler' Den zweiten Fehler zeigt er mir da :
Delphi-Quellcode:
Muss ich da noch Variablen oder irgendetwas deklarieren?
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); procedure spieler; <- FEHLER end; |
Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf
Die Procedure Spieler muss wahrscheinlich folgendermaßen implementiert werden:
Delphi-Quellcode:
;)
procedure TSpielfeld.Spieler
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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