实例1--小狗过桥游戏

实例一 小狗过桥游戏

【程序说明】

本例实现了小狗过桥的游戏。程序一开始,左边小狗开始下落运动,右边浮桥开始向上运动。在窗口单击左键时会出现另一渡桥。通过这个渡桥,左边小狗要达到上升的浮桥,否则就游戏失败。如果小狗遇到上升浮桥,小狗就会和这个浮桥一起向上运动。接近窗口顶端时,两只小狗见面了,游戏成功。游戏成功和失败的结果如图1-1和1-2所示。

图1-1 游戏成功提示 图1-2 游戏失败信息

【编程思路】

本例的游戏主要依靠Timer 控制Image 的运动来实现。Image 运动过程会出现很多中情况。这些情况都要加以考虑。因此,游戏开发需要考虑很多条件,不同的条件的响应事件是不同的。比如,在本例中,假如小狗在渡桥的下方、小狗运动超过窗口边框或者是小狗超过渡桥还没有与之相遇,这些情况游戏都会给出失败提示。而当小狗落在上升的红桥的上方时,小狗随着上升浮桥一起上升,直到与另一只小狗相遇。具体的说明见代码。

【编程步骤】.

1.选择File|New|Application,新建一个应用程序。

2.添加控件和界面布局。向Form 上添加4个Image ,2个Timer 和1个Button 。

3.控件主要属性设置。为了避免图像运动过程中的过分闪烁,这里设置2个Timer 的Interval 为100,Enabled 均为False 。4个Image 里的Picture 内容:Image1为左边小狗,Image2为左边渡桥,Image3为上升浮桥,Image4为右边小狗。其他控件属性设置如图1-3所示。

图1-3 控件属性和布局

4.编写代码。

(1)双击Button1(“重新开始”),然后添加下列代码以响应OnClick 事件,将各对象位置复原,重新开始一个游戏。

procedure TForm1.Button1Click(Sender: TObject);

begin

Image1.Left:=0; //下移小狗位置复原

Image1.Top:=0;

Image3.Top:=Form1.Height-16; //上升浮桥位置复原

Image4.Visible:=False;

//开启Timer

Timer1.Enabled:=True;

Timer2.Enabled:=True;

end;

(2)双击Timer1,然后添加下列代码以响应OnTimer 事件,实现左端小狗针对不同的具体情况进行不同的运动。

procedure TForm1.Timer1Timer(Sender: TObject);

begin

If Image1.Top+Image1.Height>Image2.Top Then

{这句代码主要是和后面的Image1.Top:=Image1.Top+4相抵消,小狗就只有水平方向的运动速度了} Image1.Top:=Image1.Top-4;

If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height), Point(Image3.Left,Image3.Top)) Then

Timer1.Enabled:=False;

If (Image1.Top>Image3.Top+Image3.Height) or //小狗位于桥的下放

(Image1.Top+Image1.Height>Form1.Height) or //小狗超过了窗口的下边界

(Image1.Left+Image1.Width>Form1.Width) Then //小狗超过了窗口的右边界

Begin

Timer1.Enabled:=False;

Timer2.Enabled:=False;

showMessage('游戏失败');

end;

Image1.Left:=Image1.Left+4; //小狗右移

Image1.Top:=Image1.Top+4; //小狗下移

end;

(3)双击Timer2,然后添加下列代码以响应OnTimer 事件,实现上升浮桥的不同运动状态。

procedure TForm1.Timer2Timer(Sender: TObject);

begin

Image3.Top:=Image3.Top-2;

If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height), Point(Image3.Left,Image3.Top)) Then

Image1.Top:=Image1.Top-2; //Image1和Image3一起向上运动

If Image3.Top=40 Then //快接近顶端时,停止Timer2

Begin

Image4.Left:=Image3.Left+Image3.Width; //两只小狗见面

Image4.Top:=Image1.Top;

Image4.Visible:=True;

Timer2.Enabled:=False;

Application.MessageBox('成功了!两只小狗见面了!',' 游戏成功',1);

end;

end;

(4)在Form1的OnMouseMove 事件中添加下列代码,判断鼠标左键是否按下,再决定渡桥是否显示出来,还是将渡桥复原。

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

If ssLeft in Shift Then

Begin

Image2.Visible:=True; //当按下左键时,渡桥可见

Image2.Left:=x;

Image2.Top:=y;

end

Else

Begin

{没有按下左键但鼠标又在移动时,渡桥放置在左下角,使左边小狗可以继续下移 }

Image2.Left:=10;

Image2.Top:=Height-120;

end;

end;

松开鼠标后,渡桥仍然隐藏,这个实现代码如下:

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

Image2.Visible:=False; //当松开鼠标时,渡桥隐藏

end;

5.保存所有文件,然后按F9运行该程序。

【程序小结】

这是一个非常简单的游戏程序实例。虽然简单,但还是用到了游戏设计的一些基本思路,比如点的位置判断,不同的条件设置和判断,游戏素材的属性设置和条件控制等。但是,首先在头脑中形成一个游戏的大体原型才是最重要的。这一点在后面的实例中会进一步阐述。

实例一 小狗过桥游戏

【程序说明】

本例实现了小狗过桥的游戏。程序一开始,左边小狗开始下落运动,右边浮桥开始向上运动。在窗口单击左键时会出现另一渡桥。通过这个渡桥,左边小狗要达到上升的浮桥,否则就游戏失败。如果小狗遇到上升浮桥,小狗就会和这个浮桥一起向上运动。接近窗口顶端时,两只小狗见面了,游戏成功。游戏成功和失败的结果如图1-1和1-2所示。

图1-1 游戏成功提示 图1-2 游戏失败信息

【编程思路】

本例的游戏主要依靠Timer 控制Image 的运动来实现。Image 运动过程会出现很多中情况。这些情况都要加以考虑。因此,游戏开发需要考虑很多条件,不同的条件的响应事件是不同的。比如,在本例中,假如小狗在渡桥的下方、小狗运动超过窗口边框或者是小狗超过渡桥还没有与之相遇,这些情况游戏都会给出失败提示。而当小狗落在上升的红桥的上方时,小狗随着上升浮桥一起上升,直到与另一只小狗相遇。具体的说明见代码。

【编程步骤】.

1.选择File|New|Application,新建一个应用程序。

2.添加控件和界面布局。向Form 上添加4个Image ,2个Timer 和1个Button 。

3.控件主要属性设置。为了避免图像运动过程中的过分闪烁,这里设置2个Timer 的Interval 为100,Enabled 均为False 。4个Image 里的Picture 内容:Image1为左边小狗,Image2为左边渡桥,Image3为上升浮桥,Image4为右边小狗。其他控件属性设置如图1-3所示。

图1-3 控件属性和布局

4.编写代码。

(1)双击Button1(“重新开始”),然后添加下列代码以响应OnClick 事件,将各对象位置复原,重新开始一个游戏。

procedure TForm1.Button1Click(Sender: TObject);

begin

Image1.Left:=0; //下移小狗位置复原

Image1.Top:=0;

Image3.Top:=Form1.Height-16; //上升浮桥位置复原

Image4.Visible:=False;

//开启Timer

Timer1.Enabled:=True;

Timer2.Enabled:=True;

end;

(2)双击Timer1,然后添加下列代码以响应OnTimer 事件,实现左端小狗针对不同的具体情况进行不同的运动。

procedure TForm1.Timer1Timer(Sender: TObject);

begin

If Image1.Top+Image1.Height>Image2.Top Then

{这句代码主要是和后面的Image1.Top:=Image1.Top+4相抵消,小狗就只有水平方向的运动速度了} Image1.Top:=Image1.Top-4;

If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height), Point(Image3.Left,Image3.Top)) Then

Timer1.Enabled:=False;

If (Image1.Top>Image3.Top+Image3.Height) or //小狗位于桥的下放

(Image1.Top+Image1.Height>Form1.Height) or //小狗超过了窗口的下边界

(Image1.Left+Image1.Width>Form1.Width) Then //小狗超过了窗口的右边界

Begin

Timer1.Enabled:=False;

Timer2.Enabled:=False;

showMessage('游戏失败');

end;

Image1.Left:=Image1.Left+4; //小狗右移

Image1.Top:=Image1.Top+4; //小狗下移

end;

(3)双击Timer2,然后添加下列代码以响应OnTimer 事件,实现上升浮桥的不同运动状态。

procedure TForm1.Timer2Timer(Sender: TObject);

begin

Image3.Top:=Image3.Top-2;

If PtInRect(Rect(Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height), Point(Image3.Left,Image3.Top)) Then

Image1.Top:=Image1.Top-2; //Image1和Image3一起向上运动

If Image3.Top=40 Then //快接近顶端时,停止Timer2

Begin

Image4.Left:=Image3.Left+Image3.Width; //两只小狗见面

Image4.Top:=Image1.Top;

Image4.Visible:=True;

Timer2.Enabled:=False;

Application.MessageBox('成功了!两只小狗见面了!',' 游戏成功',1);

end;

end;

(4)在Form1的OnMouseMove 事件中添加下列代码,判断鼠标左键是否按下,再决定渡桥是否显示出来,还是将渡桥复原。

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

If ssLeft in Shift Then

Begin

Image2.Visible:=True; //当按下左键时,渡桥可见

Image2.Left:=x;

Image2.Top:=y;

end

Else

Begin

{没有按下左键但鼠标又在移动时,渡桥放置在左下角,使左边小狗可以继续下移 }

Image2.Left:=10;

Image2.Top:=Height-120;

end;

end;

松开鼠标后,渡桥仍然隐藏,这个实现代码如下:

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

Image2.Visible:=False; //当松开鼠标时,渡桥隐藏

end;

5.保存所有文件,然后按F9运行该程序。

【程序小结】

这是一个非常简单的游戏程序实例。虽然简单,但还是用到了游戏设计的一些基本思路,比如点的位置判断,不同的条件设置和判断,游戏素材的属性设置和条件控制等。但是,首先在头脑中形成一个游戏的大体原型才是最重要的。这一点在后面的实例中会进一步阐述。


相关内容

  • 三年级数学活动课教案辛瑞婷
  • 三年级数学教案--<观察物体活动课> 一.教学目标: 1.通过本节课的活动进一步加深学生对知识的理解. 2.体会图形变换的意义,体会学习数学的乐趣. 3.在分组活动的过程中,与他人能够合作交流. 二.教学重点: 加深对"对称"的理解与掌握. 三.教学难点: 利用所学的 ...

  • 幼儿259首儿歌
  • 幼儿259首儿歌 1.螳螂--大螳螂,空绿袄,举着两把镰刀,走啊走,跳啊跳,害虫抓住跑不了. 2.蝴蝶--头上两根须,身穿花衣衫,飞进花朵里,传粉又吃蜜. 3.叫--黄狗,黄狗,汪汪汪:灰鹅,灰鹅,嘎嘎嘎:白羊,白羊,咩咩咩:黑猫,黑猫,喵喵喵:小宝,小宝,妈妈妈. 4.想吃糖小狗想吃糖,对着宝宝摇 ...

  • 看图写话:乐于助人的小狗汪汪
  • 乐于助人的小狗汪汪 简阳一小二年级 毛俪熹 清晨,太阳升起来了,小狗汪汪起 床了,正在吃饭的妈妈说:"汪汪,在别人有困难的时候,你一定要帮助别人,让别人喜欢上你,同时你自己也会体验其中的快乐!" 吃完早饭,小狗汪汪出了门,它 边走边想:我怎样才能帮助别人呢?忽然,小狗汪汪听到了& ...

  • 锻练宝宝口才的100首经典绕口令!
  • [转]锻练宝宝口才的100首经典绕口令! 拍手歌(一) 你拍一,我拍一,一个小孩坐飞机.你拍二,我拍二,两个小孩丢手绢.你拍三,我拍三,三个小孩来搬砖.你拍四,我拍四,四个小孩写大字.你拍五,我拍五,五个小孩敲锣鼓.你拍六,我拍六,六个小孩拣豆豆.你拍七,我拍七,七个小孩穿新衣.你拍八,我拍八, 八 ...

  • 婴幼儿儿歌大全(精华版)
  • 拍手歌(一) 你拍一,我拍一,一个小孩坐飞机. 你拍二,我拍二,两个小孩丢手绢. 你拍三,我拍三,三个小孩来搬砖. 你拍四,我拍四,四个小孩写大字. 你拍五,我拍五,五个小孩敲锣鼓. 你拍六,我拍六,六个小孩拣豆豆. 你拍七,我拍七,七个小孩穿新衣. 你拍八,我拍八,八个小孩吃西瓜. 你拍九,我拍九 ...

  • 物理幽默及笑话系列
  • 编者按:物理学一向以严谨.抽象.刻板著称,为了给同学们的物理学习增加些趣味性,本栏目特推出系列与物理相关的幽默及笑话. 不懂科学 儿子躺在沙发里看画报,母亲气喘吁吁地走进屋说:"我买了一车煤,现在煤车停在桥那边,拉不上来,你来帮妈推一下吧!""咳,妈,你不懂科学,&qu ...

  • 中班上学期汇报课方案
  • 开场词:尊敬的家长朋友,欢迎各位家长朋友在百忙中抽出时间参加学期期末汇报会.在这半年的学习时间,我们的孩子长大了懂事了,各方面都有很大的进步,孩子们在成长,我们的幼儿园也在进步.孩子们也在各种活动中得到了锻炼与成长.幼儿园的发展离不开大家的支持,因为幼儿园的工作确实是大杂烩,事情又多又杂,我们每天做 ...

  • 小学a6"左右"课堂实录与教学反思
  • 本文为自本人珍藏 版权所有 仅供参考 "左右"课堂实录与教学反思 教学目标: 1.以生活中有关"左右"的真实情境激发学生的学习兴趣. 2.培养学生运用"左右"的数学知识解决实际问题的能力. 3.认识"左右"的位置关 ...

  • 读[小猫的生活故事]有感
  • 读<小猫的生活故事>有感 新仁苗族乡文化小学 六年级 卢艺丹 指导老师:张运彬 联系电话:[1**********] 现代科学发展日新月异,社会非常繁荣,许多东西都很发达.而我只想坐在一个幽静的地方,静静地看着漫画,读读小说,看故事书,„„.我想看的一切都是与书有关的东西. 在学校开展的 ...