![]() |
|
|
#1
|
|||
|
|||
|
Написала код игры
Игра простая я двигаю человечком и должна убить паучка. компилируется,запускается, все без ошибок (не выдает их) НО при запуске выводит только белый экран! ни моих пауков, ничего.. что делать? |
|
#2
|
||||
|
||||
|
Цитата:
|
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
PhoeniX (18.12.2013)
| ||
|
#3
|
|||
|
|||
|
не надо исправлять код. моя проблема в прозрачности цвета
|
|
#4
|
||||
|
||||
|
Цитата:
|
|
#5
|
|||
|
|||
|
спасибо за помощь
|
|
#6
|
||||
|
||||
|
Незачто, обращайтесь! Мы можем помочь ещё, если увидим саму программу
![]() |
|
#7
|
|||
|
|||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DXDraws, DIB, DXSprite, DXClass, DXInput;
type
TfrmDelphiX1 = class(TDXForm)
DXDraw: TDXDraw;
DXSpriteEngine: TDXSpriteEngine;
DXTimer: TDXTimer;
DXImageList: TDXImageList;
DXInput: TDXInput;
procedure FormCreate(Sender: TObject);
procedure DXTimerTimer(Sender: TObject; LagCount: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
TPlayerSprite = class(TImageSprite)
protected
procedure DoMove(MoveCount: Integer); override;
end;
TSpider = class(TImageSprite)
Protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
public
constructor Create(AParent: TSprite); override;
destructor Destroy; override;
end;
TBullet = class(TImageSprite)
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
public
constructor Create(AParent: TSprite); override;
destructor Destroy; override;
end;
var
frmDelphiX1: TfrmDelphiX1;
i:boolean;
implementation
// TBullet
Procedure TBullet.DoMove(MoveCount: Integer);
Begin
inherited DoMove(MoveCount);
y:=y-5;
end;
constructor TBullet.Create(AParent: TSprite);
begin
inherited Create(AParent);
end;
destructor TBullet.Destroy;
begin
inherited Destroy;
end;
procedure TBullet.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is TSpider then dead;
Collision;
end;
//TSpider
Procedure TSpider.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if x>= 500 then I:= false;
if x<= 0 then I:= true;
if i=true then X := X+1;
if i=false then X := X-1;
Collision;
end;
constructor TSpider.Create(AParent: TSprite);
begin
inherited Create(AParent);
Image := frmDelphiX1.DXImageList.Items.Find('Spider');
Width := Image.Width;
Height := Image.Height;
end;
destructor TSpider.Destroy;
begin
inherited Destroy;
end;
procedure TSpider.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is TBullet then dead;
Collision;
end;
// TPlayerSprite
Procedure TPlayerSprite.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if isLeft in frmDelphiX1.DXInput.States then x:=x-5;
if isRight in frmDelphiX1.DXInput.States then x:=x+5;
if isup in frmDelphiX1.DXInput.States then
begin
with TBullet.Create(Engine) do
begin
PixelCheck := True;
Image := frmDelphiX1.dxImageList.Items.Find('Bullet');
Image := frmDelphiX1.dxImageList.Items.Find('Spider');
X := Self.X+Self.Width -40;
Y := Self.Y+Self.Height -80;
Width := Image.Width;
Height := Image.Height;
end;
end;
if y >= frmDelphiX1.DXDraw.SurfaceHeight-image.Height then
y := frmDelphiX1.DXDraw.SurfaceHeight-image.Height;
if x >= frmDelphiX1.DXDraw.SurfaceWidth -image.Width then
x := frmDelphiX1.DXDraw.SurfaceWidth -image.Width;
if y <= 0 then
y := 1;
if x <= 0 then
x:=1;
end;
{$R *.dfm}
procedure TfrmDelphiX1.FormCreate(Sender: TObject);
begin
i:=true;
with TSpider.Create(DXSpriteEngine.Engine) do
begin
PixelCheck := True;
Image := frmDelphiX1.dxImageList.Items.Find('Spider');
x:=10;
y:=10;
Width := Image.Width;
Height := Image.Height;
end;
with TPlayerSprite.Create(DXSpriteEngine.Engine) do
begin
PixelCheck := True;
Image := frmDelphiX1.dxImageList.Items.Find('GameUnit');
x:=500;
y:=500;
Width := Image.Width;
Height := Image.Height;
end;
end;
procedure TfrmDelphiX1.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw.CanDraw then exit;
DXInput.Update;
DXSpriteEngine.Move(LagCount);
DXSpriteEngine.Dead;
DXDraw.Surface.Fill(clWhite);
DXSpriteEngine.Draw;
DXDraw.Flip;
end;
end.Последний раз редактировалось Victoria, 19.12.2013 в 13:49. |
|
#8
|
|||
|
|||
|
мне посоветовали добавить компонент bitmap
и там с прозрачностью поиграть... но нельзя же меня судить, когда я не знаю, как этим пользоваться. посоветуйе что-нибудь... |