Delphi "Gra"

0

witam nie wiem czy był już jakiś tut ale zapytam wprost ort! chce stworzyc swoją pierwszą "mini Gre" W delphi jaki kod użyć aby po kliknięciu Strzałkę w przód Button1 Dał np Left +1 oto mi dokładnie chodzi Grę w której sterujemy buttonem za pomocą strzałek ;D Może ktoś pomóc ?

0

zacznijmy od tego, że musisz być w stanie odebrać komunikaty naciśnięcia klawisza. ponieważ zwykły button jest zaznaczalny, a że po wrzuceniu na formę on jest zaznaczony to zbiera wszystkie komunikaty i z niewiadomych mi powodów nie daje sobie obsłużyć naciśnięcia strzałek. aby temu zapobiec wrzuć na formę speedbutton, którego nie da się zaznaczyć, a jedynie kliknąć. następnie zaznacz formę, wejdź w zakładkę events, kliknij dwukrotnie na onkeydown i wpisz/skopiuj:

  if Key=VK_DOWN then
    begin
      SpeedButton1.Top:=SpeedButton1.Top+1;
    end;

ostatecznie powinno to wyglądać mniej więcej tak: (tego kodu nie kopiuj, spowoduje błędy kompilatora, jeśli będzie nieumiejętnie wklejony)

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=VK_DOWN then
    begin
      SpeedButton1.Top:=SpeedButton1.Top+1;
    end;
end;

end.

to tak na początek. polecam poszperać w internecie za co odpowiada wszystko, bo to co na pierwszy rzut oka wydaje się łatwe do zrobienia nie zawsze takie jest. jak chcesz dodać w grze trochę ruchu to dodaj na formę timera (zakładka system) oraz speedbuttona (z zakładki additional) - speedbuttona ustaw gdzies po lewej stronie, w timerze ustaw interval na 25, kliknij go dwukrotnie i wpisz:

SpeedButton1.Left:=SpeedButton1.Left+1;

zauwazysz ze przycisk bedzie sie poruszal w prawo. polecam przeczytac jakis kurs pascala, to powinno dac Ci podstawy do napisania programu ktory bedzie np odbijal ten przycisk od krawedzi, co pozniej mozesz rozwinac w cos w stylu arkanoida.

0

A jest taka mozliwosc aby Sterować wszystkimi Strzałkami ? Bo ten kodzik steruje tylko strzałką w dól Nie wiem gdzie wkleic reszte kodu czyli VK_UP, Left itp ;D z góry dzieki za pomoc

0

Wrzuć na formę ApplicationEvents i wklej w zdarzemniu OnMessage:

  if (Msg.message = WM_KEYDOWN) then
  begin
    case Msg.wParam of
      VK_DOWN:Button1.Top:=Button1.Top + 1;
      VK_UP: Button1.Top:=Button1.Top - 1;
      VK_LEFT: Button1.Left:=Button1.Left - 1;
      VK_RIGHT: Button1.Left:=Button1.Left + 1;
    end;
  end;
0

Oczywiście cimak ma rację, że takie rzeczy tylko w Erze, eee... to znaczy takie rzeczy tylko raczej z
GetKeyboardState, polecam przeanalizować sobie źródła pod poniższym adresem. Bardzo prosta gra.
Powstała ona właśnie na potrzeby pokazowe dla jakiegoś lenia, ktory to samodzielnie nie kombinował.
http://www.speedyshare.com/files/27184565/prosta_gra.rar

1 użytkowników online, w tym zalogowanych: 0, gości: 1