![]() |
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:
Hier ein Screenshot:
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. 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 |
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 |
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:
oder auch
if ImTrump.Left > Width
Delphi-Quellcode:
if ImTrump.Left > self.Width
|
AW: Hippes Spiel für Infomartik GK 11 Problem
[OT]
Zitat:
Gruß K-H [/OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz