danke erst mal für die antwort.
also das spielfeld ist ein bitmap, was sich auf einer dximagelist befindet. das ist 800x600 pixel gross. die figur, die da rumrennt, ist zur zeit auch nur eine. (bitmap 30 x 30)... das problem ist jetzt, das sich noch keine steine auf dem Bitmap befinden, sodass der spieler noch überall lang kommt.
Hier mal mein Quelltext zur Zeit
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93:
| unit BombU;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DXDraws, Grids, StdCtrls, DXClass, ExtCtrls, DXInput, ImgList, DXSprite;
type TForm1 = class(TForm) DXDraw1: TDXDraw; DXInput1: TDXInput; DXTimer1: TDXTimer; DXImageList1: TDXImageList; DXSpriteEngine1: TDXSpriteEngine; procedure DXTimer1Timer(Sender: TObject; LagCount: Integer); procedure DXDraw1Initialize(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TUnserLogo = class(TImageSprite); TGeist = class(TImageSprite); TBack = class(TBackgroundSprite);
var Form1: TForm1; Xpos :integer=0; Ypos : Integer=0; Xv : integer=1; Yv : integer=1; UnserLogo : TUnserLogo; UnserBack : TBack; Geist : array [1..4] of TGeist; j : integer=0; implementation
{$R *.DFM}
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin
DXInput1.Update; // Abfrage DXInput
if isUp in DXInput1.states then ypos:=ypos-10; if isDown in form1.DXInput1.states then ypos:=ypos+10; if isLeft in form1.DXInput1.states then xpos:=xpos-10; if isRight in form1.DXInput1.states then xpos:=xpos+10; if isButton1 in form1.DXInput1.states then begin xpos:=dxdraw1.surfacewidth div 2-(DXImageList1.Items[0].Width div 2+22); ypos:=dxdraw1.surfaceheight div 2-(DXImageList1.Items[0].height div 2-50); end;
// Bewegungsroutinen zuende
UnserLogo.X:=xpos; UnserLogo.Y:=Ypos;
if not DXDraw1.CanDraw then Exit; // Zeichenroutinene DXSpriteEngine1.Move(1); DXDraw1.Surface.Fill(0); DXSpriteEngine1.Draw; DXDraw1.Flip;
if xpos <= 0 then xpos:=0; if xpos >= 760 then xpos:=760; if ypos <= 0 then ypos:=0; if ypos >= 560 then ypos:=560;
end;
procedure TForm1.DXDraw1Initialize(Sender: TObject); begin screen.Cursor := crNone; UnserLogo := TUnserLogo.Create(DXSpriteEngine1.Engine); //logo erstellen UnserLogo.Image := Form1.DXImageList1.Items.Find('logo'); UnserLogo.X := 0; UnserLogo.Y := 0; UnserLogo.Width := UnserLogo.Image.Width; UnserLogo.Height := UnserLogo.Image.Height;
UnserBack := Tback.create(dxSpriteEngine1.Engine); // background erstellen UnserBack.setmapsize(1, 1); UnserBack.image:= Form1.DXImagelist1.items.Find('erde'); UnserBack.x:= -5; UnserBack.y:= -5;
end;
end. |
Das Spielfeld besteht nicht wie von dir vermutet aus steinen(30x30), sonder ein komplettes bmp. Ich möchte praktisch so ne art gitter mit einer gittergrösse von 30x30 drüberlegen und in diesem gitter dem spieler erlauben, wo er langlaufen darf und wo nicht