AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Einfügen von Prozeduren

Einfügen von Prozeduren

Ein Thema von Cloudwalk · begonnen am 10. Apr 2008 · letzter Beitrag vom 11. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2   
Cloudwalk

Registriert seit: 10. Apr 2008
25 Beiträge
 
#1

Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:05
Halli hallo...

ich mache in der Schule delphi und hab dran spaß gefunden nun will ich ein Spiel bauen ich hab auch alle schon soweit fertig, wie ihr sehen könnt, nur finde ich manche Fehler noch nicht und hoffe, dass ihr mir da weiterhelfen könnt. Fehler die beim compelieren entstehen = Rot

Delphi-Quellcode:
unit Spiel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    usereingabe: TEdit;
    OK1: TButton;
    username1: TLabel;
    leben1: TLabel;
    vorne: TButton;
    rechts: TButton;
    links: TButton;
    hinten: TButton;
    Image: TImage;
    username2: TLabel;
    leben2: TLabel;
    Spieler: TLabel;
    spielnachricht: TLabel;
    schuss: TButton;
    procedure OK1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure vorneClick(Sender: TObject);
    procedure rechtsClick(Sender: TObject);
    procedure linksClick(Sender: TObject);
    procedure hintenClick(Sender: TObject);
    procedure schussClick(Sender: TObject);
    procedure zug(var zug,wid:integer);
    procedure schuss2(schadenmax,schadenmin:integer; s:real; var l1:integer);
    procedure schuss1(schadenmax,schadenmin:integer; s:real;var l2:integer);
    procedure entfernung(p1,p2 :integer; var s:real);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
    private
    { Private declarations }
  public
    username:1..2;
  end;

var
x1,x2,x3,x4,cx1,cx2,y1,y2,y3,y4,cy1,cy2,w1,w2,wid,zug,schadenmax,schadenmin:integer;
l1,l2:real;
s1,s2:string;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
l1 := 100;
l2 := 100;
x1 :=10;
x2 :=20;
x3 :=630;
x4 :=640;
cx1 := 15;
cx2 := 635;
cy1 := 15;
cy2 :=385;
y1 :=10;
y2 :=20;
y3 :=380;
y4 :=390;
w1 :=400;
w2 :=400;
schadenmax := 30;
schadenmin := 20;

username:= 1;
[Color=#00FF00]zug := 5;

end;

procedure TForm1.OK1Click(Sender: TObject);
var Bitmap : TBitmap;
begin
case username of


1:begin
  s1 := usereingabe.Text;
  if s1 ='then
    begin
      showmessage('Du hast keinen Usernamen eingegeben!');
      exit;
    end
  else
    begin
      username1.caption :=s1;
      leben1.caption := floattostr(l1);
      Spieler.caption := 'Spieler 2';
      username:=2;
    end
end;


2:begin
  s2 := usereingabe.Text;
  if s2 ='then
    begin
      showmessage('Du hast keinen Usernamen eingegeben!');
      exit;
    end
  else
    begin
      //screeneigenschaften festlegen
      username2.caption :=s2;
      leben2.caption := floattostr(l2);

      //eingabe verschwinden lassen
      ok1.Visible := false;
      usereingabe.Visible:=false;
      Spieler.visible :=false;

      //Bitmap create
      Bitmap := TBitmap.Create;
      Bitmap.Width := Image.Width;
      Bitmap.Height := Image.Height;
      Image.Picture.Graphic := Bitmap;

      //Eigenschaften stift
      Image.Canvas.pen.mode := pmBlack;

      //Startrechteck zeichnen

      //Spieler 1
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      Image.Canvas.Pixels[cx1, cy1];
      //Spieler 2
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      Image.Canvas.Pixels[cx2, cy2];

      //wid setzen
      wid:= 2;
      spielnachricht.caption :='Spieler '+ floattostr(wid) +' ist an der Reihe.';
end
end;
end;
end;


procedure TForm1.vorneClick(Sender: TObject);
begin
  if wid = 1 then
      begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      Image.Canvas.pen.mode := pmBlack;
      X1 := X1;
      X2 := X2;
      Y1 := Y1-10;
      Y2 := Y2-10;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      [Color=#00FF00zug(zug,wid);[color]
    end
  else
    begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      Image.Canvas.pen.mode := pmBlack;
      X3 := X3;
      X4 := X4;
      Y3 := Y3-10;
      Y4 := Y4-10;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
     [Color=#00FF00 zug(zug,wid);[color]
    end;
  end;

procedure TForm1.rechtsClick(Sender: TObject);
begin
  if wid = 1 then
      begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      Image.Canvas.pen.mode := pmBlack;
      X1 := X1+10;
      X2 := X2+10;
      Y1 := Y1;
      Y2 := Y2;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      [Color=#00FF00zug(zug,wid);[color]
    end
  else
    begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      Image.Canvas.pen.mode := pmBlack;
      X3 := X3+10;
      X4 := X4+10;
      Y3 := Y3;
      Y4 := Y4;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      [Color=#00FF00zug(zug,wid);[color]
    end;
  end;


procedure TForm1.linksClick(Sender: TObject);
begin
  if wid = 1 then
      begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      Image.Canvas.pen.mode := pmBlack;
      X1 := X1-10;
      X2 := X2-10;
      Y1 := Y1;
      Y2 := Y2;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      [Color=#00FF00]zug(zug,wid);[color]
    end
  else
    begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      Image.Canvas.pen.mode := pmBlack;
      X3 := X3-10;
      X4 := X4-10;
      Y3 := Y3;
      Y4 := Y4;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      [Color=#00FF00]zug(zug,wid);[color]
    end;
  end;

procedure TForm1.hintenClick(Sender: TObject);
begin
  if wid = 1 then
      begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      Image.Canvas.pen.mode := pmBlack;
      X1 := X1;
      X2 := X2;
      Y1 := Y1+10;
      Y2 := Y2+10;
      Image.Canvas.Rectangle(X1, Y1, X2, Y2);
      [Color=#00FF00]zug(zug,wid);[color]
    end
  else
    begin
      Image.Canvas.pen.mode := pmWhite;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      Image.Canvas.pen.mode := pmBlack;
      X3 := X3;
      X4 := X4;
      Y3 := Y3+10;
      Y4 := Y4+10;
      Image.Canvas.Rectangle(X3, Y3, X4, Y4);
      [Color=#00FF00]zug(zug,wid);[color]
    end;
  end;




procedure TForm1.schussClick(Sender: TObject);
var p1,p2:integer;s:real;
begin
if wid = 1 then
  begin
    if cy1<=cy2 then
      begin
        p1:=cy2-cy1;
        if cx1<=cx2 then
          begin
            p2:=cx2-cx1;
            entfernung(p1,p2,s);
          end
        else
          begin
            p2:=cx1-cx2;
            entfernung(p1,p2,s);
          end;
        end
    else
      begin
        p1:=cy1-cy2;
        if cx1<=cx2 then
          begin
            p2:=cx2-cx1;
            entfernung(p1,p2,s);
          end
        else
          begin
            p2:=cx1-cx2;
            entfernung(p1,p2,s);
          end
        end;
    end;
end;


procedure entfernung(p1,p2 :integer; var s:real);
var pall:integer; nah:real;
begin
    pall:=(sqr(p1))+(sqr(p2));
    s :=sqrt(pall);
    if wid = 1 then
      begin
        if s>w1 then
          begin
            nah := s-w1;
            showmessage('Du kannst nicht soweit schießen! '+floattostr(nah)+'meter näher!');
            exit;
          end
        else
          begin
          [Color=#00FF00]schuss1(schadenmax,schadenmin,s,l2);[color]
          end;
        end
    else
      begin
        if s>w2 then
          begin
            nah := s-w2;
            showmessage('Du kannst nicht soweit schießen! '+floattostr(nah)+'meter näher!');
            exit;
          end
        else
          begin
            [Color=#00FF00]schuss2(schadenmax,schadenmin,s,l2);[color]
          end;
    end;
end;

procedure schuss1(schadenmax,schadenmin:integer; s:real;var l2:integer);
var ab:integer;
begin
  Randomize;
  ab :=(random(schadenmax)+schadenmin);
  s := s/10;
  ab :=ab+s;
  l2 := l2-ab;
  leben2.Caption := floattostr(l2);
  showmessage(s1+' hat '+s2+' '+floattostr(ab)+' Lebenspunkte abgezogen');
end;

procedure schuss2(schadenmax,schadenmin:integer; s:real; var l1:integer);
var ab:integer;
begin//Berechnung des Schadens
  Randomize;
  ab :=(random(schadenmax)+schadenmin);
  s := s/10;
  ab :=ab+s;
  l1 := l1-ab;
  leben1.Caption := floattostr(l1);
  showmessage(s2+' hat '+s1+' '+floattostr(ab)+' Lebenspunkte abgezogen');
end;

procedure [Color=#00FF00]zug(var zug,wid:integer);[color]
begin
    zug := zug-1;
    if zug = 0 then
      begin
        if wid = 1 then
          begin
            wid := 2;
            spielnachricht.caption :='Spieler 2 ist an der Reihe.';
            zug := 5;
          end
        else
          begin
            wid := 1;
            spielnachricht.caption :='Spieler 1 ist an der Reihe.';
            zug := 5;
          end;
        end;
    end;

[Color=#00FF00]procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_LEFT: begin
    linksClick(Sender: TObject);
      Key := 0;
    end;
    VK_RIGHT: begin
    rechtsClick(Sender: TObject);
      Key := 0;
    end;
    VK_UP: begin
    vorneClick(Sender: TObject);
      Key := 0;
    end;
    VK_DOWN: begin
    hinten;
      Key := 0;
    end;
  end;
end;[color]
end.
Edit// dateien hinzugefügt
Angehängte Dateien
Dateityp: rar spiel_204.rar (12,0 KB, 7x aufgerufen)
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:11
Wilkommen in der DP!

Es ist glaub ich nicht so gut ein riesen Code hier abzusetzen (*gg*) ohne Fehlermeldungen dabei zu haben.
außerdem ist dir das ROT machen nicht ganz gelungen.

Mir wäre es lieb, wenn du bitte einen Fehler nach dem anderen in die Runde wirfst,
aber falls du dir vorher SELBST noch keine Gedanken gemacht hast, wird dir auch keiner helfen (wollen).

Edit: Soll die Überschrift bedeuten, dass du nicht weißt, wie man eine Procedure erstellt/benutzt ?
(wäre anhand deines Quelltextes einleuchtend )
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
wido

Registriert seit: 2. Jan 2006
122 Beiträge
 
#3

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:14
Der Code ist ja offensichtlich kein Geheimnis. Da bietet es sich dann an, einfach das komplette Projekt in ein ZIP Archiv zu stecken und anzuhängen ans Posting. Dann könnt man nämlich einfach selbst compilen und schauen wos kracht .
  Mit Zitat antworten Zitat
Cloudwalk

Registriert seit: 10. Apr 2008
25 Beiträge
 
#4

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:18
selb st gedanken gemacht hab ich mir schon klar den ganzen tag schon und bin sogar langsam am verzweifeln also gut, fange ich mal neu an.

dann fang ich mal mit dem einfügen von Prozeduren an, wie das threadthema schon lautet.

also

ich hab die Prozedur zug:
procedure zug(var zug,wid:integer); der zug prozedur code ist:
Delphi-Quellcode:
procedure zug(var zug,wid:integer);
begin
    zug := zug-1;
    if zug = 0 then
      begin
        if wid = 1 then
          begin
            wid := 2;
            spielnachricht.caption :='Spieler 2 ist an der Reihe.';
            zug := 5;
          end
        else
          begin
            wid := 1;
            spielnachricht.caption :='Spieler 1 ist an der Reihe.';
            zug := 5;
          end;
        end;
    end;
und ich weiß jetzt nicht wie ich es in eine andere prozedur einbinde bis jetzt hab ich
zug(zug,wid); genommen doch dies klappt nicht. types of actual and formal var parameters must be identical ist die fehlermeldung.
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:24
Ich will nicht unhöflich sein, aber trotzdem muss ich dich wahrscheinlich erstmal auf die Tutorials der DP und vor allem auf die von www.dsdt.info verweisen.

Du musst erstmal die Delphi-Grundlagen erlernen!

Eine Procedure mit Parametern aufzurufen ist essenziell zum Programmieren,
anstatt von zug & wid musst du beim Aufruf Zahlenwerte eingeben, diese werden dann der Prozedur übergeben.
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Cloudwalk

Registriert seit: 10. Apr 2008
25 Beiträge
 
#6

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:27
ja... das hab ich mir auch schon durchgelesen, aber ich komme mit dem Beispiel der töne nicht zurecht. könntet ihr mir da nicht sagen, wie ich das in meinem Fall richtig mache?
Daniel
  Mit Zitat antworten Zitat
wido

Registriert seit: 2. Jan 2006
122 Beiträge
 
#7

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:28
Es ist im allgemeinen recht unklug Identifier wiederzuverwenden, weil der Compiler dann nie weiß was Du mit dem Namen meinst. Der globale Integer und die Prozedur haben den selben Namen: zug. Wenn Du jetzt also zug referenzierst, kann der Compiler nur raten ob Du jetzt den Integer oder die Prozedur meinst. Benutz also eindeutige Identifier.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:29
Du brauchst eine Variable zug und wid vom Typ Integer, die du der Prozedur übergibst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:31
Ich habe mir grad deinen Source runtergeladen und bin erschüttert ...
ich schätze die Fehleranzahl auf 30 -.-

Hast du diesen Quellcode erstellt? Wenn ja wie hast du dir das alles gedacht???

Bitte lese dir sämtliche Einsteiger Tutorials durch und versuch dich als erstes an kleinen Projekten, im Moment kann dir Keiner hier helfen.
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Cloudwalk

Registriert seit: 10. Apr 2008
25 Beiträge
 
#10

Re: Einfügen von Prozeduren

  Alt 10. Apr 2008, 21:35
Die meißten fehler kommen ja durch das einfügen der Prozeduren. und da ich nicht weiß wie ich dasrichtig mache, komme ich da nicht weiter...
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:36 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