AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein debugger Exception - pacman macht probleme
Thema durchsuchen
Ansicht
Themen-Optionen

debugger Exception - pacman macht probleme

Ein Thema von mr.winkle · begonnen am 9. Jun 2006 · letzter Beitrag vom 11. Jun 2006
 
mr.winkle

Registriert seit: 25. Mai 2006
98 Beiträge
 
Delphi 7 Personal
 
#1

debugger Exception - pacman macht probleme

  Alt 9. Jun 2006, 16:38
Tag alle zusammen!
Ich hab ein kleines Problem mit nem Programm.
Ich bekommen eine "Benachrichtung über Debugger-Exception" und weiß echt nicht wieso.

Das Programm soll Blöcke anzeigen und einen gelben kreis der sich darin bewegen kann - soll nachher mal so ähnlich wie pacman werden.

Bei
for i:=1 to high(block) do showblock(i); (ganz unten im ontimer ereignis)
gibts diesen Fehler, blau markiert ist dann die zeile
rectangle(bx,by,bx+21,by+21); in tblock.show.

Delphi-Quellcode:
unit Unit1;

interface

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

type

  tspieler=class(Tobject)
    x,y:integer;
    procedure show;
    procedure bewegen(dir:string);
  end;

  tblock = class(TObject)
    bx,by:integer;
    da:boolean;
    procedure show;
  end;

  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure malelevel(r:integer);
    procedure Timer1Timer(Sender: TObject);
  end;

var
  Form1: TForm1;
  block:array of Tblock;
  level:array[1..14] of string;
  spieler:Tspieler;

implementation

{$R *.dfm}

procedure Tspieler.show;
begin
form1.Image1.Canvas.Brush.color:=clyellow;
form1.Image1.Canvas.Ellipse(x-8,y-8,x+8,y+8);
end;

procedure Tspieler.bewegen(dir:string);
begin
if (dir='links') then dec(x,5);
if (dir='rechts') then inc(x,5);
if (dir='oben') then dec(y,5);
if (dir='unten') then inc(y,5);
end;

procedure Tblock.show;
begin
with form1.image1.Canvas do begin
 brush.color:=clskyblue;
 rectangle(bx,by,bx+21,by+21);
 end;
end;

procedure Tform1.malelevel(r:integer);
var i,k:integer;
begin
if r=1 then begin
level[1]:= 'xxxxxxxxxxxxxxxxxxxx';
level[2]:= 'x xxxx xx';
level[3]:= 'x xxx x x xx';
level[4]:= 'x x xx';
level[5]:= 'x xx x xxx xx xx';
level[6]:= 'x xx x xxx xx xx';
level[7]:= 'x xx x xxx xx xx';
level[8]:= 'xxxxx xxxxxxx xx';
level[9]:= 'xxxxxx xxxxxxxxxxxxx';
level[10]:= 'xx xxxxxx';
level[11]:= 'xxx xx xxxxxxx';
level[12]:= 'x xxxxxxx x';
level[13]:= 'xxxxxxxxxx xxxx';
level[14]:= 'xxxxxxxxxxxxxxxxxxxx';
end;

setlength(block,high(level)*length(level[1]));

for k:=1 to high(level) do
for i:=1 to length(level[k]) do begin
block[i]:=tblock.Create;
block[i].bx:=i*20;
block[i].by:=k*20;
if level[k][i]='xthen block[i].da:=true;
end; end;

procedure TForm1.FormCreate(Sender: TObject);
begin
spieler:=Tspieler.Create;
malelevel(1);
spieler.x:=100;
spieler.y:=50;
spieler.show;
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin
if GetAsyncKeyState(VK_LEFT)<0 then spieler.bewegen('links');
if GetAsyncKeyState(VK_RIGHT)<0 then spieler.bewegen('rechts');
if GetAsyncKeyState(VK_UP)<0 then spieler.bewegen('oben');
if GetAsyncKeyState(VK_DOWN)<0 then spieler.bewegen('unten');
image1.Canvas.Brush.color:=clwhite;
image1.Canvas.FillRect(image1.ClientRect);
spieler.show;
for i:=1 to high(block) do block[i].show;
end;

end.
  Mit Zitat antworten Zitat
 


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 06:09 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