當前位置:首頁 » 操作系統 » 運動控制源碼

運動控制源碼

發布時間: 2024-06-22 18:32:45

⑴ Python游戲開發,Python實現貪吃蛇小游戲與吃豆豆 附帶源碼

Python版本: 3.6.4

相關模塊:

pygame模塊;

以及一些Python自帶的模塊。

安裝Python並添加到環境變數,pip安裝需要的相關模塊即可。

貪吃蛇的 游戲 規則應該不需要我多做介紹了吧T_T。寫個貪吃蛇 游戲 其實還是很簡單的。首先,我們進行一下 游戲 初始化:

然後定義一個貪吃蛇類:

其中head_coord用來記錄蛇頭所在位置,而tail_coords是一個二維數組,用來記錄所有蛇身的位置。一開始,貪吃蛇長為3,並且位置是隨機生成的。用戶通過 鍵來控制貪吃蛇的行動:

需要注意的是,貪吃蛇不能180 大拐彎,只能90 地拐彎。例如正在向左行動的貪吃蛇不能瞬間變成向右行動。具體而言,代碼實現如下:

然後,我們需要隨機生成一個食物,且需要保證該食物的位置不與貪吃蛇的位置相同:

在更新貪吃蛇的時候,如果它吃到了食物,則蛇身長加一,否則只是簡單的按照給定的方向行動而不改變蛇身長度:

同時,當貪吃蛇吃到食物時,需要重新生成一個新的食物:

最後,當貪吃蛇碰到牆壁或者蛇頭碰到蛇身時, 游戲 結束:

並顯示一下 游戲 結束界面:

玩家通過 鍵控制 游戲 的主角吃豆人吃掉藏在迷宮內的所有豆子,並且不能被鬼魂抓到。

若能順利吃完迷宮內的所有豆子並且不被鬼魂抓到,則 游戲 勝利,否則 游戲 失敗。

逐步實現:

Step1:定義 游戲 精靈類

首先,讓我們先來明確一下該 游戲 需要哪些 游戲 精靈類。

① 牆類

② 食物類(即豆豆)

③ 角色類

角色類包括吃豆人和鬼魂,鬼魂由電腦控制其運動軌跡,吃豆人由玩家控制其運動軌跡。

顯然,其均需具備更新角色位置和改變角色運動方向的能力,其源代碼如下:

Step2:設計 游戲 地圖

利用Step1中定義的 游戲 精靈類,我們就可以開始設計 游戲 地圖了。由於時間有限,我只寫了一個關卡的 游戲 地圖,有興趣的小夥伴可以在此基礎上進行擴展(在我的源代碼基礎上進行擴展是很方便滴~)。 游戲 地圖的設計包括以下四方面內容:

① 創建牆

② 創建門(一開始關幽靈用的)

image.gif

③ 創建角色

④ 創建食物

因為食物不能和牆、門以及角色的位置重疊,所以為了方便設計 游戲 地圖,要先創建完牆、門以及角色後再創建食物:

Step3:設計 游戲 主循環

接下來開始設計 游戲 主循環。首先是初始化:

然後定義主函數:

其中startLevelGame函數用於開始某一關 游戲 ,其源代碼如下:

showText函數用於在 游戲 結束或關卡切換時在 游戲 界面中顯示提示性文字,其源代碼如下:


⑵ 用C#編寫的祖瑪游戲的源代碼

Dim Num As Integer 』串球數量

Dim Games As Integer 』關數最大為10

Dim Color As Integer 』球的顏色數

Dim Bs As Integer 』發球速度

Dim GameRun As Boolean 』游戲狀態

Dim Score As Integer 』成績

2、程序初始化

Private Sub Form_Load()

』讀取游戲關數,用VB的GetSetting函數從注冊表中讀取

Games = GetSetting(App.EXEName, App.Title, "Level", "1")

Num = Pb.Width \ Balls1(0).Width + 1

For i = 1 To Num 』載入控制項

Load Balls1(i): Load Balls2(i)

Next

End Sub

3、游戲初始化,完成軌道小球的初始位置

Sub InitGame()

Randomize

Color = 3 + Games \ 3

For i = 0 To Num 』生成軌道串球

Balls1(i).Picture = Image1(Int(Rnd * Color)).Picture

If i > 0 Then Balls1(i).Left = Balls1(i - 1).Left + Balls1(0).Width

Balls1(i).Visible = False

』下軌道小球位置控制代碼略

Next

Ball.Picture = Image1(Int(Rnd * Color)).Picture

Ball.Visible = True 』發球圖案

End Sub

4、游戲開始

Private Sub Command1_Click()

Call InitGame

Timer1.Enabled = True

End Sub

5、軌道小球運動

Private Sub Timer1_Timer()

』註:下軌道小球運動代碼略

If Balls1(0).Left > 0 And Balls2(0).Left > 0 Then

』移動速度Ms1控制,代碼略

Balls1(0).Left = Balls1(0).Left - Ms1

For i = 1 To Num 』其它球隨移

Balls1(i).Left = Balls1(i - 1).Left + Balls1(0).Width

Next

Else 』移到最左邊

』停止游戲,並作未過關處理

End If

End Sub

6、確定發球的水平位置

Private Sub Pb_MouseMove(Button, Shift, X, Y)

』發出的小球在運動時不處理

If Timer2.Enabled = True Or Timer3.Enabled = True Then Exit Sub

』根據滑鼠位置確定發出的水平位置

Ball.Left = X - Ball.Width \ 2

』超出遊戲區域左邊界的處理

If Ball.Left < 0 Then Ball.Left = 0

』右邊界的處理,代碼略

End Sub

7、發球控制

Private Sub Pb_MouseDown(Button, Shift, X, Y)

』根據滑鼠位置確定發球運動方向

If Y <= Pb.Height \ 2 Then

Md = -1 』向上

Else

Md = 1 』向下

End If

』根據滑鼠離發球位置的距離確定發出小球的運動速度

Bs = Abs(Y - Pb.Height \ 2) \ 15

If GameRun = True Then

』向上運動

If Md = -1 And Timer2.Enabled = False Then Timer2.Enabled = True

』向下運動,代碼略

End If

End Sub

8、發球向上運動

Private Sub Timer2_Timer()

If Ball.Top > Line1.Y1 Then 』上升

If Ball.Top - Bs <= Line1.Y1 Then 』到頂

』暫停游戲,代碼略

Ball.Top = Line1.Y1

K = -1 』確定插入位置

For i = 0 To Num

』發球水平對稱線

p = Ball.Left + Ball.Width \ 2

If … Then 』判斷在哪個球,條件略

If … Then 』在左側,條件略

K = i

Else

K = i + 1

End If

Exit For

End If

Next

If K >= 0 Then 』能碰撞

』產生音效

If Dir("pop.wav") <> "" Then sndPlaySound "pop.wav", &H0 Or &H1

』插入位置的小球依次後移

For s = Num To K + 1 Step -1

Balls1(s).Picture = Balls1(s - 1).Picture

Next

Balls1(K).Picture = Ball.Picture 』插入

』找消失的左右位置V1、V2,代碼略

If V2 - V1 + 1 >= 3 Then 』有三個

』計分,代碼略

』過關及結束處理,代碼略

』消失的小球閃爍,代碼略

』消失相連小球,代碼略

』所有小球後退(V2-V1+1)個小球位置,代碼略

』向前填充直到V1處圖像非空

While Balls1(V1).Picture = LoadPicture("")

』填充,代碼略

Wend

End If

End If

』繼續游戲,代碼略

Else 』向上運動

Ball.Top = Ball.Top - Bs

End If

End If

End Sub

9、發球向下運動

Private Sub Timer3_Timer()

』代碼略

End Sub

⑶ 求C語言編寫的壁球小游戲的源代碼,謝謝。

速度和 接板 長度不能改

所以比較難玩

#include "graphics.h"
#include "stdio.h"
#include "conio.h" /*所需的頭文件*/

int on; /*聲明具有開關作用的全局變數*/
static int score; /*聲明靜態的記分器變數*/

/* 定義開始界面函數*/

int open()
{
setviewport(100,100,500,380,1); /*設置圖形窗口區域*/
setcolor(4); /*設置作圖色*/
rectangle(0,0,399,279); /*以矩形填充所設的圖形窗口區域*/
setfillstyle(SOLID_FILL,7); /*設置填充方式*/
floodfill(50,50,4); /*設置填充范圍*/
setcolor(8);
settextstyle(0,0,9); /*文本字體設置*/
outtextxy(90,80,"BALL"); /*輸出文本內容*/
settextstyle(0,0,1);
outtextxy(110,180,"version 1.0");
outtextxy(110,190,"made by ddt");
setcolor(128);
settextstyle(0,0,1);
outtextxy(120,240,"Press any key to continue......");
}

/*定義退出界面函數*/
int quitwindow()
{
char s[100]; /*聲明用於存放字元串的數組*/
setviewport(100,150,540,420,1);
setcolor(YELLOW);
rectangle(0,0,439,279);
setfillstyle(SOLID_FILL,7);
floodfill(50,50,14);
setcolor(12);
settextstyle(0,0,8);
outtextxy(120,80,"End");
settextstyle(0,0,2);
outtextxy(120,200,"quit? Y/N");
sprintf(s,"Your score is:%d",score);/*格式化輸出記分器的值*/
outtextxy(120,180,s);
on=1; /*初始化開關變數*/
}

/*主函數*/
main()
{
int gdriver,gmode;
gdriver=DETECT; /*設置圖形適配器*/
gmode=0; /*設置圖形模式*/
registerbgidriver(EGAVGA_driver);/* 注冊BGI驅動後可以不需要.BGI文件的支持運行 */
initgraph(&gdriver,&gmode,"");
setbkcolor(14);
open(); /*調用開始界面函數*/
getch(); /*暫停*/

while(1) /*此大循環體控制游戲的反復重新進行*/
{
int driver,mode,l=320,t=400,r,a,b,dl=5,n,x=200,y=400,r1=10,dx=-2,dy=-2;/*初始化小球相關參數*/
int left[100],top[100],right[100],bottom[100],i,j,k,off=1,m,num[100][100];/*方磚陣列相關參數*/
static int pp;
static int phrase; /*一系列起開關作用的變數*/
int oop=15;
pp=1;
score=0;
driver=DETECT;
mode=VGA;
registerbgidriver(EGAVGA_driver);
initgraph(&driver,&mode,"");
setbkcolor(10);
cleardevice(); /*圖形狀態下清屏*/
clearviewport(); /*清除現行圖形窗口內容*/
b=t+6;
r=l+60;
setcolor(1);
rectangle(0,0,639,479);
setcolor(4);
rectangle(l,t,r,b);
setfillstyle(SOLID_FILL,1);
floodfill(l+2,t+2,4);

for(i=0,k=0;i<=6;i++) /*此循環繪制方磚陣列*/
{
top[i]=k;
bottom[i]=top[i]+20;
k=k+21;
oop--;
for(j=0,m=0;j<=7;j++)
{
left[j]=m;
right[j]=left[j]+80;
m=m+81;
setcolor(4);
rectangle(left[j],top[i],right[j],bottom[i]);
setfillstyle(SOLID_FILL,j+oop);
floodfill(left[j]+1,top[i]+1,4);
num[i][j]=pp++;
}
}

while(1) /*此循環控制整個動畫*/
{
while(!kbhit())
{
x=x+dx; /*小球運動的圓心變數控制*/
y=y+dy;
if(x+r1>r||x+r1<r)
{ phrase=0;}
if((x-r1<=r||x+r1<=r)&&x+r1>=l)
{
if(y<t)
phrase=1;
if(y+r1>=t&&phrase==1)
{dy=-dy;y=t-1-r1;}
}

if(off==0)
continue;

for(i=0;i<=6;i++) /*此循環用於判斷、控制方磚陣列的撞擊、擦除*/

for(j=0;j<=7;j++)
{
if((x+r1<=right[j]&&x+r1>=left[j])||(x-r1<=right[j]&&x-r1>=left[j]))
{
if(( y-r1>top[i]&&y-r1<=bottom[i])||(y+r1>=top[i]&&y+r1<=bottom[i] ))
{
if(num[i][j]==0)
{continue; }
setcolor(10);
rectangle(left[j],top[i],right[j],bottom[i]);
setfillstyle(SOLID_FILL,10);
floodfill(left[j]+1,top[i]+1,10);
dy=-dy;
num[i][j]=0;
score=score+10;
printf("%d\b\b\b",score);
}
}
if((y+r1>=top[i]&&y+r1<=bottom[i])||(y-r1>=top[i]&&y-r1<=bottom[i]))
{
if((x+r1>=left[j]&&x+r1<right[j])||(x-r1<=right[j]&&x-r1>left[j]))
{
if(num[i][j]==0)
{ continue;}
setcolor(10);
rectangle(left[j],top[i],right[j],bottom[i]);
setfillstyle(SOLID_FILL,10);
floodfill(left[j]+1,top[i]+1,10);
dx=-dx;
num[i][j]=0;
score=score+10;
printf("%d\b\b\b",score);
}
}
}

if(x+r1>639) /*控制小球的彈射范圍*/
{dx=-dx;x=638-r1;}
if(x<=r1)
{dx=-dx;x=r1+1;}
if(y+r1>=479)
{off=0;quitwindow();break;}
if(y<=r1)
{dy=-dy;y=r1+1;}
if(score==560)
{off=0;quitwindow();break;}
setcolor(6);
circle(x,y,r1);
setfillstyle(SOLID_FILL,14);
floodfill(x,y,6);
delay(1000);
setcolor(10);
circle(x,y,r1);
setfillstyle(SOLID_FILL,10);
floodfill(x,y,10);
}

a=getch();
setcolor(10);
rectangle(l,t,r,b);
setfillstyle(SOLID_FILL,10);
floodfill(l+2,t+2,10);
if(a==77&&l<=565) /*鍵盤控制設定*/
{dl=20;l=l+dl;}
if(a==75&&l>=15)
{dl=-20;l=l+dl;}
if(a=='y'&&on==1)
break;
if(a=='n'&&on==1)
break;
if(a==27)
{quitwindow();off=0;}
r=l+60;
setcolor(4);
rectangle(l,t,r,b);
setfillstyle(SOLID_FILL,1);
floodfill(l+5,t+5,4);
delay(100);
}
if(a=='y'&&on==1) /*是否退出遊戲*/
{break;}
if(a=='n'&&on==1)
{ continue;}
}
closegraph();

}

你不是要求在TC里運行么
C++和C不同的
如果要在C++里
你前面要寫函數的聲明的
C里就不用

修改過了,試一試吧。
我這里可以
一閃而過那個是圖形界面的問題
驅動沒安裝好

⑷ 求用vbs編寫的貪吃蛇源代碼

需用VB實現,代碼如下

'定義蛇的運動速度枚舉值
Private Enum tpsSpeed
QUICKLY = 0
SLOWLY = 1
End Enum

'定義蛇的運動方向枚舉值
Private Enum tpsDirection
D_UP = 38
D_DOWN = 40
D_LEFT = 37
D_RIGHT = 39
End Enum

'定義運動區域4個禁區的枚舉值
Private Enum tpsForbiddenZone
FZ_TOP = 30
FZ_BOTTOM = 5330
FZ_LEFT = 30
FZ_RIGHT = 5730
End Enum

'定義蛇頭及身體初始化數枚舉值
Private Enum tpsSnake
SNAKEONE = 1
SNAKETWO = 2
SNAKETHREE = 3
SNAKEFOUR = 4
End Enum

'定義蛇寬度的常量
Private Const SNAKEWIDTH As Integer = 100

'該過程用於顯示游戲信息
Private Sub Form_Load()
Me.Show
Me.lblTitle = "BS貪食蛇 — (版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")"
Me.Caption = Me.lblTitle.Caption
frmSplash.Show 1
End Sub

'該過程用於使窗體恢復原始大小
Private Sub Form_Resize()
If Me.WindowState <> 1 Then
Me.Caption = ""
Me.Height = 6405 '窗體高度為 6405 緹
Me.Width = 8535 '窗體寬度為 8535 緹
Me.Left = (Screen.Width - Width) \ 2
Me.Top = (Screen.Height - Height) \ 2
End If
End Sub

'該過程用於重新開始開始游戲
Private Sub cmdGameStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
msg = MsgBox("您確認要重新開始游戲嗎?", 4 + 32, "BS貪食蛇")
If msg = 6 Then Call m_subGameInitialize
End Sub

'該過程用於暫停/運行游戲
Private Sub chkPause_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.chkPause.Caption = "暫停游戲(&P)" Then
Me.tmrSnakeMove.Enabled = False
Me.tmrGameTime.Enabled = False
Me.picMoveArea.Enabled = False
Me.lblPauseLab.Visible = True
Me.chkPause.Caption = "繼續游戲(&R)"
Else
Me.tmrSnakeMove.Enabled = True
Me.tmrGameTime.Enabled = True
Me.picMoveArea.Enabled = True
Me.lblPauseLab.Visible = False
Me.chkPause.Caption = "暫停游戲(&P)"
End If
End Sub

'該過程用於顯示游戲規則
Private Sub cmdGameRules_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
MsgBox " BS貪食蛇:一個規則最簡單的趣味游戲,您將用鍵盤" & Chr(13) & _
"上的4個方向鍵來控制蛇的運動方向。在運動過程中蛇" & Chr(13) & _
"不能後退,蛇的頭部也不能接觸到運動區域的邊線以外" & Chr(13) & _
"和蛇自己的身體,否則就游戲失敗。在吃掉隨機出現的" & Chr(13) & _
"果子後,蛇的身體會變長,越長難度越大。祝您好運!!", 0 + 64, "游戲規則"
End Sub

'該過程用於顯示游戲開發信息
Private Sub cmdAbout_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
MsgBox "BS貪食蛇" & "(V-" & App.Major & "." & App.Minor & "版本)" & Chr(13) & Chr(13) & _
"" & Chr(13) & Chr(13) & _
"由PigheadPrince設計製作" & Chr(13) & _
"CopyRight(C)2002,BestSoft.TCG", 0, "關於本游戲"
End Sub

'該過程用於退出遊戲
Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Beep
msg = MsgBox("您要退出本游戲嗎?", 4 + 32, "BS貪食蛇")
Select Case msg
Case 6
End
Case 7
Me.chkWindowButton(2).Value = 0
Exit Sub
End Select
End Sub

'該過程用於拖動窗體_(點擊圖標)
Private Sub imgWindowTop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End Sub

'該共用過程用於處理窗體控制按鈕組的相關操作_(鎖定、最小化、退出)
Private Sub chkWindowButton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
Select Case Index
Case 0 '鎖定窗體
If Me.chkWindowButton(0).Value = 1 Then
Me.imgWindowTop.BorderStyle = 0
Me.imgWindowTop.Enabled = False
Else
Me.imgWindowTop.BorderStyle = 1
Me.imgWindowTop.Enabled = True
End If
Case 1 '最小化
Me.WindowState = 1
Me.chkWindowButton(1).Value = 0
Me.Caption = "BS貪食蛇 — (V-" & App.Major & "." & App.Minor & "版本)"
Case 2 '退出
Beep
msg = MsgBox("您要退出本游戲嗎?", 4 + 32, "BS貪食蛇")
Select Case msg
Case 6
End
Case 7
Me.chkWindowButton(2).Value = 0
Exit Sub
End Select
End Select
End Sub

'該過程用於設置蛇運動速度的快慢
Private Sub hsbGameSpeed_Change()
Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value
End Sub

'該過程用於通過鍵盤的方向鍵改變蛇的運動方向
Private Sub picMoveArea_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case g_intDirection
Case D_UP
If KeyCode = D_DOWN Then Exit Sub
Case D_DOWN
If KeyCode = D_UP Then Exit Sub
Case D_LEFT
If KeyCode = D_RIGHT Then Exit Sub
Case D_RIGHT
If KeyCode = D_LEFT Then Exit Sub
End Select
g_intDirection = KeyCode
End Sub

'該計時循環過程用於計算游戲耗費的秒數並顯示
Private Sub tmrGameTime_Timer()
g_lngGameTime = g_lngGameTime + 1
Me.lblGameTime.Caption = g_lngGameTime & "秒"
End Sub

'該計時循環過程用於控制蛇的行動軌跡
Private Sub tmrSnakeMove_Timer()
Dim lngSnakeX As Long, lngSnakeY As Long, lngSnakeColor As Long
Dim lngPointX As Long, lngPointY As Long, lngPointColor As Long
Randomize
Me.picMoveArea.SetFocus
Me.picMoveArea.Cls
'確認蛇頭的運動方向並獲取新的位置
Select Case g_intDirection
Case D_UP '向上運動
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY - SNAKEWIDTH
Case D_DOWN '向下運動
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY + SNAKEWIDTH
Case D_LEFT '向左運動
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX - SNAKEWIDTH
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
Case D_RIGHT '向右運動
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX
g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX + SNAKEWIDTH
g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY
End Select
'根據新的位置繪制蛇頭
lngSnakeX = g_udtSnake(SNAKEONE).Snake_CurX
lngSnakeY = g_udtSnake(SNAKEONE).Snake_CurY
lngSnakeColor = g_udtSnake(SNAKEONE).Snake_Color
Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor
'移動蛇身體其他部分的位置
For i = 2 To g_intSnakeLength
g_udtSnake(i).Snake_CurX = g_udtSnake(i - 1).Snake_OldX
g_udtSnake(i).Snake_CurY = g_udtSnake(i - 1).Snake_OldY
lngSnakeX = g_udtSnake(i).Snake_CurX
lngSnakeY = g_udtSnake(i).Snake_CurY
lngSnakeColor = g_udtSnake(i).Snake_Color
Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor
Next i
'更新蛇舊的坐標位置
For j = 1 To g_intSnakeLength
g_udtSnake(j).Snake_OldX = g_udtSnake(j).Snake_CurX
g_udtSnake(j).Snake_OldY = g_udtSnake(j).Snake_CurY
Next j
'判斷蛇在移動中是否到了禁區而導致游戲失敗
If m_funMoveForbiddenZone(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
Beep
MsgBox "您的蛇移動到了禁區,游戲失敗!", 0 + 16, "BS貪食蛇"
Me.tmrSnakeMove.Enabled = False
Me.tmrGameTime.Enabled = False
Me.picMoveArea.Visible = False
Exit Sub
End If
'判斷蛇在移動中是否碰到了自己的身體而導致游戲失敗
If m_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
Beep
MsgBox "您的蛇在移動中碰到了自己的身體,游戲失敗!", 0 + 16, "BS貪食蛇"
Me.tmrSnakeMove.Enabled = False
Me.tmrGameTime.Enabled = False
Me.picMoveArea.Visible = False
Exit Sub
End If
'判斷蛇是否吃到了果子
If m_funEatPoint(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then
'累加玩家的得分並刷新得分顯示
g_intPlayerScore = g_intPlayerScore + 1
Me.lblYourScore.Caption = g_intPlayerScore & "分"
Call m_subAddSnake '加長蛇的身體
Call m_subGetPoint '獲取下一個果子的位置和顏色
Else
'繪制果子
lngPointX = g_udtPoint.Point_X
lngPointY = g_udtPoint.Point_Y
lngPointColor = g_udtPoint.Point_Color
Me.picMoveArea.PSet (lngPointX, lngPointY), lngPointColor
End If
End Sub

'該私有子過程用於初始化游戲
Private Sub m_subGameInitialize()
Erase g_udtSnake '清空蛇的結構數組
g_intPlayerScore = 0 '清空玩家的得分
g_lngGameTime = 0 '清空游戲耗費的秒數
g_intDirection = D_DOWN '設定蛇的初始運動方向為下
g_intSnakeLength = 4 '設定蛇的初始長度
ReDim g_udtSnake(1 To g_intSnakeLength) '重新定義蛇的長度
'定義蛇頭部的數據
With g_udtSnake(SNAKEONE)
.Snake_OldX = 530
.Snake_OldY = 530
.Snake_Color = vbBlack
End With
'定義蛇身第2節的數據
With g_udtSnake(SNAKETWO)
.Snake_OldX = 530
.Snake_OldY = 430
.Snake_Color = vbGreen
End With
'定義蛇身第3節的數據
With g_udtSnake(SNAKETHREE)
.Snake_OldX = 530
.Snake_OldY = 330
.Snake_Color = vbYellow
End With
'定義蛇身第4節的數據
With g_udtSnake(SNAKEFOUR)
.Snake_OldX = 530
.Snake_OldY = 230
.Snake_Color = vbRed
End With
Me.picMoveArea.Visible = True
Me.lblYourScore.Caption = g_intPlayerScore & "分"
Me.lblGameTime.Caption = g_lngGameTime & "秒"
Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value
Me.tmrSnakeMove.Enabled = True
Me.tmrGameTime.Enabled = True
Call m_subGetPoint '獲取第一個果子的位置和顏色
End Sub

接下面的

⑸ 求個Python小游戲

Python3X\Lib\turtledemo\nim.py自帶的尼姆游戲

熱點內容
qq為什麼密碼修改好了就進不去 發布:2024-11-26 11:37:05 瀏覽:382
電容為啥耐壓越大存儲量越小 發布:2024-11-26 11:31:52 瀏覽:189
天然氣車載儲氣瓶泄露處置腳本 發布:2024-11-26 11:17:36 瀏覽:254
換ip的伺服器 發布:2024-11-26 11:17:29 瀏覽:75
容器平台怎麼看配置 發布:2024-11-26 11:06:09 瀏覽:940
qq的xml源碼 發布:2024-11-26 11:04:05 瀏覽:704
ip設計緩存設置 發布:2024-11-26 10:56:49 瀏覽:107
c語言k值 發布:2024-11-26 10:48:53 瀏覽:870
Java霸王大陸 發布:2024-11-26 10:44:52 瀏覽:704
樂高機器人怎麼編程 發布:2024-11-26 10:36:12 瀏覽:374