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 ?
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.
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
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;
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