Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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.035 c
8-1078388044
GH@ST
2004-03-04 11:14
2004.05.23
Как можно уменьшить JPG?


3-1083131925
Vilux
2004-04-28 09:58
2004.05.23
Регулярные выражения в MSSQL


4-1081251517
Dimitry
2004-04-06 15:38
2004.05.23
Запрет ввода некоторых символов в Edit


1-1083935956
Aks
2004-05-07 17:19
2004.05.23
SystemTrayIcon


7-1082224554
ЧупаЧупс
2004-04-17 21:55
2004.05.23
Частота обновления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский