Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Hippes Spiel für Infomartik GK 11 Problem (https://www.delphipraxis.net/191312-hippes-spiel-fuer-infomartik-gk-11-problem.html)

Hauerdom.exe 2. Jan 2017 11:33

Hippes Spiel für Infomartik GK 11 Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, liebe Community

Wir haben ein Problem bei unserem Spiel, welches wir für den Informatikunterricht programmieren sollen.
Unser Ziel ist es, dass ein Punkt gutgeschrieben wird, wenn eine Figur die andere berührt.

Hier ist unser Programm:
Code:
unit uTrumpAttackRemastered;

interface

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

type
  TForm1 = class(TForm)
    ImMauer: TImage;
    LabelTacoAnzahl: TLabel;
    ImMex1: TImage;
    ImMex2: TImage;
    ImMex3: TImage;
    ImMex4: TImage;
    ImMex5: TImage;
    ImMex6: TImage;
    Timer1: TTimer;
    Timer2: TTimer;
    Timer3: TTimer;
    Timer4: TTimer;
    Timer5: TTimer;
    Timer6: TTimer;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    ImTrump: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    Image10: TImage;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
    procedure Timer5Timer(Sender: TObject);
    procedure Timer6Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

const
 Grenze = 1000;

var
  Form1: TForm1;
  Taco : integer;

implementation

{$R *.dfm}


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin

  if key = 'd' then
   begin
    if ImTrump.Left > Form1.Width
    then
      ImTrump.Left:= -ImTrump.Width
     else
      ImTrump.Left := ImTrump.Left + 105;
   end;

  if key = 'a' then
   begin
  if ImTrump.Left > Form1.Width
    then
     ImTrump.Left:= -ImTrump.Width
    else
    ImTrump.Left := ImTrump.Left - 105;
   end;

end;


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var Taco, i : integer;
begin
 if key = vk_space then
  begin
    ImMauer.Visible:=true;
    Image6.Visible:=true;
  end;

  if Form1.ImMex1.Top >= Form1.ImTrump.Top then
   begin
    Form1.ImMex1.Top := 0;
    Taco := Taco + 1;
    LabelTacoAnzahl.Caption:= inttostr(Taco);
   end;

    if Form1.ImMex2.Top >= Form1.ImTrump.Top then
   begin
    Form1.ImMex2.Top := 0;
    Taco := Taco + 1;
    LabelTacoAnzahl.Caption:= inttostr(Taco);
   end;

     if Form1.ImMex3.Top >= Form1.ImTrump.Top then
   begin
    Form1.ImMex3.Top := 0;
    Taco := Taco + 1;
    LabelTacoAnzahl.Caption:= inttostr(Taco);
   end;

     if Form1.ImMex4.Top >= Form1.ImTrump.Top then
   begin
    Form1.ImMex4.Top := 0;
    Taco := Taco + 1;
    LabelTacoAnzahl.Caption:= inttostr(Taco);
   end;

     if Form1.ImMex5.Top >= Form1.ImTrump.Top then
   begin
    Form1.ImMex5.Top := 0;
    Taco := Taco + 1;
    LabelTacoAnzahl.Caption:= inttostr(Taco);
   end;

     if Form1.ImMex6.Top >= Form1.ImTrump.Top then
   begin
    Form1.ImMex6.Top := 0;
    Taco := Taco + 1;
    LabelTacoAnzahl.Caption:= inttostr(Taco);
   end;

end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = vk_space then
  begin
   ImMauer.Visible:=false;
   Image6.Visible:=false;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
begin;
  ImMex1.Visible:=true;
  ImMex1.Top := ImMex1.Top + 5;
  if ImMex1.Top > Form1.Height then
     begin
      ImMex1.Top := 0;
     end;
  if (ImTrump.Left > ImMex1.Left) and (ImTrump.Left < ImMex1.Left + ImMex1.Width) then
   for i := 1 to Grenze -1  do
    begin
     Taco:= i+1;
     LabelTacoAnzahl.Caption := inttostr(Taco);
    end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  ImMex2.Visible:=true;
  ImMex2.Top := ImMex2.Top + 5;
  if ImMex2.Top > Form1.Height then
     begin
      ImMex2.Top := 0;
     end;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
  ImMex3.Visible:=true;
  ImMex3.Top := ImMex3.Top + 5;
  if ImMex3.Top > Form1.Height then
     begin
      ImMex3.Top := 0;
     end;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
  ImMex4.Visible:=true;
  ImMex4.Top := ImMex4.Top + 5;
  if ImMex4.Top > Form1.Height then
     begin
      ImMex4.Top := 0;
     end;
end;

procedure TForm1.Timer5Timer(Sender: TObject);
begin
  ImMex5.Visible:=true;
  ImMex5.Top := ImMex5.Top + 5;
  if ImMex5.Top > Form1.Height then
     begin
      ImMex5.Top := 0;
     end;
end;

procedure TForm1.Timer6Timer(Sender: TObject);
begin
  ImMex6.Visible:=true;
  ImMex6.Top := ImMex6.Top + 5;
  if ImMex5.Top > Form1.Height then
     begin
      ImMex6.Top := 0;
     end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
 LabelTacoAnzahl.Caption := inttostr(0);
end;

end.
Hier ein Screenshot:
Anhang 46404

Das Problem: Immer wenn die Figuren auf der Höhe des Hauptcharakters sind, erscheint eine sehr hohe Zahl anstatt einem Punkt. Könntet ihr uns helfen?

Nicht wundern, es ist ein satirisch angehauchtes Projekt :-D

stahli 2. Jan 2017 11:50

AW: Hippes Spiel für Infomartik GK 11 Problem
 
Hallo Hauerdom,

herzlich willkommen erstmal.

Ein Problem sollte daran liegen, dass Ihr Taco nochmal lokal deklariert habt, also nicht auf die globale Variable zugegriffen wird.

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 var ->Taco<-, i : integer;
 begin

DeddyH 2. Jan 2017 12:08

AW: Hippes Spiel für Infomartik GK 11 Problem
 
Hat zwar nix mit dem Problem zu tun, aber tut Euch selbst den Gefallen und greift nicht innerhalb einer Methode einer Formularklasse auf die globale Form-Variable zu. Spätestens wenn Ihr mal (wieso auch immer) eine 2. Instanz des Formulars benötigt, greift Ihr auf die falsche zu.
Zitat:

Delphi-Quellcode:
if ImTrump.Left > Form1.Width

->
Delphi-Quellcode:
if ImTrump.Left > Width
oder auch
Delphi-Quellcode:
if ImTrump.Left > self.Width

p80286 2. Jan 2017 13:13

AW: Hippes Spiel für Infomartik GK 11 Problem
 
[OT]
Zitat:

Zitat von Hauerdom.exe (Beitrag 1357730)
.... des Hauptcharakters.....

Nicht wundern, es ist ein satirisch angehauchtes Projekt :-D

Oha, und ich hatte schon vermutet, daß hier wieder einmal Sprachlegastheniker am Werk sind.

Gruß
K-H
[/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 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