AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilfe!
Thema durchsuchen
Ansicht
Themen-Optionen

Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilfe!

Ein Thema von leela · begonnen am 9. Jan 2005 · letzter Beitrag vom 12. Jan 2005
Antwort Antwort
Seite 2 von 4     12 34      
leela
(Gast)

n/a Beiträge
 
#11

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 9. Jan 2005, 17:28
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?
  Mit Zitat antworten Zitat
leela
(Gast)

n/a Beiträge
 
#12

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 9. Jan 2005, 22:04
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:
procedure tSpieler.init(f1Neu:tColor;x1Neu,x2Neu,y1Neu,y2Neu:Single);
begin
 farbe1:= f1Neu;
 x1:= x1Neu;
 x2:= x2Neu;
 y1:= y1Neu;
 y2:= y2Neu;
end;
Ich will dann den Spieler eben aufrufen mit
Spieler.init(color,x1,y1,x2,y2) und ihn auch bewegen können.. Oder sollte ich das besser anders machen? WIE?
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#13

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 9. Jan 2005, 22:18
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;
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#14

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 9. Jan 2005, 22:51
moin,

init steht wohl für initiieren, mit anderen Worten diese Funktion setzt nur eine neue Farbe und neue Koordinaten...
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
leela
(Gast)

n/a Beiträge
 
#15

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 9. Jan 2005, 22:55
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?
Angehängte Dateien
Dateityp: rar spiel3_118.rar (168,6 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#16

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 9. Jan 2005, 23:27
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.
  Mit Zitat antworten Zitat
leela
(Gast)

n/a Beiträge
 
#17

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 10. Jan 2005, 18:28
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.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#18

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 10. Jan 2005, 18:49
Zitat von xineohp:
moin,

init steht wohl für initiieren, mit anderen Worten diese Funktion setzt nur eine neue Farbe und neue Koordinaten...
Ist Init nicht due Kurzofrm für "Initialisieren"

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
leela
(Gast)

n/a Beiträge
 
#19

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 10. Jan 2005, 21:04
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:
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;
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.

Delphi-Quellcode:
    
    vk_down: // "runtertaste gedrückt"
    begin
     with Spielfeld.spieler do // paddle bewegen <- DA FEHLER
         begin
         y1:=y1-10;
         y2:=y2-10;
         end;
    end;
Da zeigt er mir dann folgende Fehlermeldungen :
[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:
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;
Muss ich da noch Variablen oder irgendetwas deklarieren?
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#20

Re: Ping Pong Spiel vereinfacht.. Brauche aber trotzdem Hilf

  Alt 10. Jan 2005, 21:48
Die Procedure Spieler muss wahrscheinlich folgendermaßen implementiert werden:

procedure TSpielfeld.Spieler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 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