Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизImage перестал двигаться. Найти похожие ветки
← →
Zak3D[@Tm] © (2004-01-09 00:00) [0]Мастера, помогите советом, сегодня начал добавлять к игре меню опции и заставку, всё было нормально, никаких ошибок не выскакивало, но машина(Image1-машина которой управляет игрок(///if KEY=VK_Left then x:=x-5///)) перестала ездить. Подробнее, первоночально была одна форма(собсно где проходит игра),потор решил добавить две формы(одну для заставки, а другую для меню), потом назначил главной, форму с заставкой т.к. я не знаю как сделать, чтобы сначала проигрывался ролик, потом появлялось меню настроек и только потом игра(что не делал, всегда сначала игра появляется или вобше ошибки выдаёт), собственно после этого рисунок и замер. Помогите пожалуйста советом, если не тяжело...
← →
Mihey © (2004-01-09 00:22) [1]Это неправильный подход - использовать Timage в качестве спрайта (т.е. машинки в твоём случае). Главной должна быть назанчена та форма, при закрытии которой должна закрываться вся игра. Порядок появления окон можно назначить абсолютно любым. Очевидно, перестали обрабатываться клавишы. Приведи весь код, поможем.
← →
Zak3D[@Tm] © (2004-01-09 00:31) [2]Код для формы с машиной такой(только начал писать)
///////////////
var
Form1: TForm1;
frames : integer;
fps : integer;
x,y,i2,i3,i4 : integer;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Frames:=Frames+1;
fps:=0;
image1.Left:=x;
image1.Top:=y;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_Escape then if MessageDlg("Вы действительно хотите выйти?",mtConfirmation,[mbYes,mbNo],0)=idYes then begin
form3.Show;
ModalResult:=3;
hide;
if Key=VK_Up then y:=y-5;
if Key=VK_Down then y:=y+5;
if Key=VK_Left then x:=x-5;
if Key=VK_Right then x:=x+5;
if x<0 then x:=0;
if x>trunc(ClientWidth-Panel1.Width-Image1.Width) then x:=trunc(ClientWidth-Panel1.Width-Image1.Width);
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
fps:=frames;
Frames:=0;
lblEdit1.Text:=intTostr(fps);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled:=true;
randomize;
Label1.Caption:="Пре-пре-пре......" + #13 + "Альфа моей игры!!!" + #13 + "Вы используете эту" + #13 + "программу на свой" + #13 + "страх и риск!!!";
trackBar1.Position:=600;
x:=Image1.Left;
y:=Image1.Top;
image1.Parent.DoubleBuffered:=True;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if Image2.Top>ClientHeight then
begin
Image2.Left:=Random(Form1.Width-Panel1.Width-image2.Width);
Image2.Top:=Trunc(-10-Image2.Height)
end
else image2.Top:=Image2.Top+6;
if Image3.Top>600 then
begin
Image3.Left:=Random(Form1.Width-Panel1.Width-image3.Width);
image3.Top:=-12-image3.Height
end
else image3.Top:=Image3.Top+5;
if Image4.Top>600 then
begin
Image4.Left:=Random(Form1.Width-Panel1.Width-image4.Width);
image4.Top:=-13-image4.Height
end
else image4.Top:=Image4.Top+5;
end;
procedure TForm1.Timer4Timer(Sender: TObject);
begin
if Trackbar1.position=0 then
begin
TrackBar1.Position:=600;
if MessageDlg("Финиш!!! Хотите попробовать ещё?",mtConfirmation,[mbYes,mbNo],0)=idNo
then Zastava.Close
end
else
Trackbar1.Position:=TrackBar1.Position - 1;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Image5.Top:=TrackBar1.Position-31;
end;
procedure TForm1.Timer5Timer(Sender: TObject);
begin
if Label1.Font.Color=clRed
then Label1.Font.Color:=ClBlue
else Label1.Font.Color:=clred;
end;
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Const
SC_DragMove=$F012;
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,SC_DragMove,0);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
AboutBox.Show;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.WindowState:=wsNormal;
Form3.Show;
ModalResult:=4;
hide;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form3.Show;
end;
///////////
← →
Zak3D[@Tm] © (2004-01-09 00:40) [3]Чёта я лишнего накопировал, сори, просто спешил чтобы ты не ушел
← →
Mihey © (2004-01-09 01:28) [4]procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Escape then if MessageDlg("Вы действительно хотите выйти?", mtConfirmation, [mbYes,mbNo], 0) = idYes then
begin
form3.Show;
ModalResult:=3;
hide;
end;
if Key=VK_Up then y:=y-5;
if Key=VK_Down then y:=y+5;
if Key=VK_Left then x:=x-5;
if Key=VK_Right then x:=x+5;
if x<0 then x:=0;
if x>trunc(ClientWidth-Panel1.Width-Image1.Width) then x:=trunc(ClientWidth-Panel1.Width-Image1.Width);
// а тут не надо
end;
Ты перепутал и поставил End в конец, т.е. остальные клавиши обрабатывались только когда пользователь нажимал Yes. Вот ещё совет - сильно с ModalResult не балуй и лучше может сначала Hide, потом ModalResult := ..., а потом Show.
← →
Mihey © (2004-01-09 01:29) [5]P.S.: Пиши всегда код с отступами - тогда точно на такое не попадёшься.
← →
Zak3D[@Tm] © (2004-01-09 12:07) [6]Спасибо Mihey сейчас попробую...
← →
Zak3D[@Tm] © (2004-01-09 12:22) [7]Да, ты был прав(как я сам этого не понял?), спасибо за помошь, не знаешь, нельзя ли сделать, чтобы флэш ролик проигрывался на заднем плане, а например машина(Image) ехала на его поверхности...
← →
Mihey © (2004-01-09 14:05) [8]Можно, но не так нужно. Ты пытаешься сделать игру просто набросав компонентов. Это не подход. В конце концов у тебя всё начнёт тормозить по страшному. Тебе уже сейчас приходится использовать DoubleBuffered. Почитай статьи на сайте DelphiGFX, в своё время я по ним учился.
← →
Zak3D[@Tm] © (2004-01-09 15:12) [9]Ладно, попробую, но не в этой игре, сейчас я просто хочу, чтобы получилась простенькая гоночка, ну так сказать для набора опыта. ;)
← →
Zak3D[@Tm] © (2004-01-09 19:51) [10]Кто-нибудь может подсказать как поверх флэшевского ролика заставить Image двигаться?
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c