麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

Delphi實現碰撞球體完整實例代碼

2020-01-31 20:51:20
字體:
來源:轉載
供稿:網友

本文以實例描述了用Delphi實現撞擊球效果的方法,類似彈球效果。點擊“開始”按鈕,窗體中的一個綠色小球將不斷地左右撞擊運動,并且其大小不停地變化。點擊“停止”按鈕,小球停止運動。用鼠標拖動右下方的調節控件,可以調整小球運動的速度。

這里我們主要是使用Timer 控件、Panel 控件、TrackBar 控件、SpinEdit 控件、Shape控件和Button 控件來實現。重點是Delphi 的Timer 控件。在運行程序時,該控件不可見,也不能直接對它進行操作。Timer 控件每隔一定時間就會自動觸發OnTimer()事件。本例就是利用它來觸發小球運動事件的。

設計思路:該程序要解決的主要問題是如何控制小球運動以及運動過程中,小球的速度和大小。利用Timer 控件的OnTimer()事件來控制小球的運動;利用TrackBar 控件和SpinEdit控件來調節小球運動的速度。小球是由Shape 控件生成的。

一.新建工程:

(1)啟動Delphi 6.0 程序。選擇“文件”菜單下的“新建”命令,從彈出的子菜單中選擇Application 選項,則出現新建工程的Form1 窗口。
(2)選擇“文件”菜單下的“工程另存為”命令,彈出Save Unit1 As 對話框。在“保存在”列表框中選擇需要存放該窗口文件所在的目錄名;在“文件名”編輯框中填寫文件名,這里填寫“Unit1”,點擊“保存”按鈕,保存上面的選項。
(3)執行上一步后,將彈出“工程另存為”對話框。在“保存在”列表框中選擇需要存放該工程的目錄名,最好和第(2)步選取相同的目錄;在“文件名”編輯框中填寫保存處理該工程的源代碼的文件名,這里填寫“Project1”,點擊“保存”按鈕,保存上面的選項。

二.部分參數設置:

(1)激活Unit1 窗口,在“屬性”面板中設置該窗體的Caption 屬性為“運動的球體”,Color 屬性設置為“clMoneyGreen”。
(2)選擇“標準”頁上的Panel 選項,在窗體中添加Panel 控件,調整其合適的大小和位置,在“屬性”面板中設置該控件的Name 屬性為“Panel1”,BevelInner 為“bvLowered”,BevelOuter 為“blNone”,BorderStyle 設置為“bsSingle”,Color 屬性設置為“clSkyBlue”。
(3)選擇“系統”頁上的Timer 選項,在窗體中添加一個Timer 控件,在Object Inspecter面板中設置其Interval 屬性為1,Name 屬性為“Timer1”。
(4)選擇“附加”頁上的Shape 選項,在窗體中Panel1 上添加一個Shape 控件,在“屬性”面板中設置其Show Hint 屬性為“True”,Hint 屬性為“運動球體”,設置其Brush.Color 屬性為ClLime,設置其Shape 屬性為“slCircle”。
(5)選擇“標準”頁上的Button 選項,在窗體中添加三個Button 控件,調整其合適的大小和位置。在“屬性”面板中設置其Caption 屬性分別為“開始”、“停止”和“退出”。
(6)選擇Win 32 頁上的TrackBar 選項,在窗體中添加TrackBar 控件,調整其合適的大小和位置。在“屬性”面板上設置其合適的屬性。
(7)選擇Samples 上的SpinEdit 選項,在窗體中添加SpinEdit 控件,調整其合適的大小和位置。在“屬性”面板上設置其合適的屬性。

三.代碼分析:

(1)為了實現小球來回移動的功能,需要設置一個全局變量,即整數I,I 的初始值為1。當I=1 時,小球向左移動,撞到面板的左壁時,I 值變為2,此時小球向右運動,撞到面板右壁時,I 值又變為1。這樣通過I 值的變化,就實現了小球的來回運動。這部分代碼在OnTimer 事件中:

procedure TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //設置Timer 控件的觸發時間間隔if i=1 then //小球向左運動beginif shape1.left>0 thenbeginshape1.left:=shape1.left-10; //使小球的位置發生變化shape1.Width:=(shape1.Width+1)mod 70; //使小球所在矩形寬度發生變化shape1.Height:=(shape1.Height+1)mod 70; //使小球所在矩形高度發生變化endelsei:=2; //小球向右運動end;if i=2 thenbeginif shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10 ; //使小球的位置發生變化shape1.Width:=(shape1.Width+1)mod 70;//使小球所在矩形寬度發生變化shape1.Height:=(shape1.Height+1)mod 70;//使小球所在矩形高度發生變化endelsei:=1;end;end;

(2)“開始”和“停止”按鈕控制小球是否運動,其實就是控制Timer 是否工作:

procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //設置Timer 控件的觸發時間間隔Timer1.Enabled:=true; //小球開始運動end;procedure TForm1.Button2Click(Sender: TObject);beginTimer1.Enabled:=False; //小球停止運動end;

(3)TrackBar 和SpinEdit 兩個控件控制小球運動的速度,相應代碼如下:

procedure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //改變運動速度end;procedure TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; //將Trackbar 值的變化通知SpinEdit 控件end;

四.Delphi彈球的完整代碼如下:

unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls, ComCtrls, StdCtrls, Spin;typeTForm1 = class(TForm)Panel1: TPanel;Button1: TButton;Button2: TButton;TrackBar1: TTrackBar;Timer1: TTimer;Shape1: TShape;SpinEdit1: TSpinEdit;Button3: TButton;procedure Timer1Timer(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure SpinEdit1Change(Sender: TObject);procedure TrackBar1Change(Sender: TObject);procedure Button3Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;i:integer;implementation{$R *.DFM}procedure TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //設置Timer 控件的觸發時間間隔if i=1 then //小球向左運動beginif shape1.left>0 thenbeginshape1.left:=shape1.left-10; //使小球的位置發生變化shape1.Width:=(shape1.Width+1)mod 70;//使小球所在矩形寬度發生變化shape1.Height:=(shape1.Height+1)mod 70;//使小球所在矩形高度發生變化endelsei:=2; //小球向右運動end;if i=2 thenbeginif shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10 ; //使小球的位置發生變化shape1.Width:=(shape1.Width+1)mod 70; //使小球所在矩形寬度發生變化shape1.Height:=(shape1.Height+1)mod 70;//使小球所在矩形高度發生變化endelsei:=1;end;end;procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //設置Timer 控件的觸發時間間隔Timer1.Enabled:=true; //小球開始運動end;procedure TForm1.Button2Click(Sender: TObject);beginTimer1.Enabled:=False; //小球停止運動end;procedure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //改變運動速度end;procedure TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; //將Trackbar 值的變化通知SpinEdit 控件end;procedure TForm1.Button3Click(Sender: TObject);beginclose; //退出end;initializationi:=1;end.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 天天看夜夜爽 | 一级黄色淫片 | 黄色大片高清 | 久久午夜免费视频 | 国产精品一区二区三区99 | 亚洲第一成人在线观看 | 蜜桃视频在线观看免费 | 亚洲第一页综合 | 日本视频免费 | 一级电影免费 | 欧洲精品久久久久69精品 | 久久久久久久久久久久久久av | 九九黄色影院 | 激情综合婷婷久久 | 19禁国产精品福利视频 | 女人解衣喂奶电影 | www.17c亚洲蜜桃| 激情黄页 | 免费嗨片首页中文字幕 | 国产成人小视频在线观看 | 国产精品久久久久久久久久iiiii | 黑人日比 | 日本不卡一区二区三区在线观看 | 国产一区二区二 | 成人毛片100部免费观看 | 天天鲁在线视频免费观看 | 国产免费视频一区二区裸体 | 亚州综合| 久久精品1区2区 | fc2国产成人免费视频 | 91av亚洲| 91美女福利视频 | 久久久国产精品免费观看 | 综合图区亚洲 | 精品欧美一区二区精品久久 | 精品99在线视频 | 蜜桃成品人免费视频 | 神马久久精品综合 | 99re66热这里只有精品8 | av电影免费播放 | 护士hd老师fre0性xxx |