VB制作小游戏源代码

VB制作小游戏源代码,第1张

猜数字

建一个文本文档,输入以下代码,后缀改为.frm用枣腔纯vb打开就可以了

以下是程序源码凳咐:

VERSION 5.00

Begin VB.Form Form1

BorderStyle = 3 'Fixed Dialog

Caption = "猜数游戏"

ClientHeight= 3900

ClientLeft = 45

ClientTop = 435

ClientWidth = 4680

LinkTopic = "Form1"

MaxButton = 0 'False

MinButton = 0 'False

ScaleHeight = 3900

ScaleWidth = 4680

ShowInTaskbar = 0 'False

StartUpPosition = 3 '窗口缺省

Begin VB.CommandButton Command2

Caption = "重新圆并开始"

Height = 615

Left= 2640

TabIndex= 2

Top = 2760

Width = 1095

End

Begin VB.CommandButton Command1

Caption = "确定"

Height = 615

Left= 840

TabIndex= 1

Top = 2760

Width = 1095

End

Begin VB.TextBox Text1

Height = 375

Left= 1200

TabIndex= 0

Top = 2040

Width = 2055

End

Begin VB.Label Label9

Caption = "戏"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H000080FF&

Height = 615

Left= 3720

TabIndex= 11

Top = 240

Width = 615

End

Begin VB.Label Label8

Caption = "游"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H00808080&

Height = 615

Left= 3240

TabIndex= 10

Top = 240

Width = 615

End

Begin VB.Label Label7

Caption = "数"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H0000FFFF&

Height = 495

Left= 2760

TabIndex= 9

Top = 240

Width = 615

End

Begin VB.Label Label6

Caption = "猜"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H00FF00FF&

Height = 495

Left= 2280

TabIndex= 8

Top = 240

Width = 735

End

Begin VB.Label Label5

Caption = "入"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H00FF0000&

Height = 615

Left= 1800

TabIndex= 7

Top = 240

Width = 855

End

Begin VB.Label Label4

Caption = "进"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H0000FF00&

Height = 735

Left= 1320

TabIndex= 6

Top = 240

Width = 735

End

Begin VB.Label Label3

Caption = "迎"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H00FFFF00&

Height = 735

Left= 840

TabIndex= 5

Top = 240

Width = 735

End

Begin VB.Label Label2

Caption = "欢"

BeginProperty Font

Name= "宋体"

Size= 24

Charset = 134

Weight = 400

Underline = 0 'False

Italic = 0 'False

Strikethrough = 0 'False

EndProperty

ForeColor = &H000000FF&

Height = 615

Left= 360

TabIndex= 4

Top = 240

Width = 495

End

Begin VB.Label Label1

Caption = "我这儿有1~10的整数,你猜猜看他是多少......"

Height = 375

Left= 480

TabIndex= 3

Top = 1320

Width = 3855

End

End

Attribute VB_Name = "Form1"

Attribute VB_GlobalNameSpace = False

Attribute VB_Creatable = False

Attribute VB_PredeclaredId = True

Attribute VB_Exposed = False

Dim x As Integer, y As Integer, z As Integer

Dim cishu As Integer

Private Sub Command1_Click()

If cishu = 3 Then MsgBox "已经猜3次了,这个数是" &x: Exit Sub

y = Val(Text1.Text)

If Text1.Text = "" Or Not IsNumeric(Text1.Text) Then

MsgBox "输入有误!请重新输入数字", 48

Text1.Text = ""

Text1.SetFocus

Exit Sub

End If

cishu = cishu + 1

Select Case x - y

Case Is <0

z = MsgBox("你猜数大了,请重猜。注意:你只有三次机会", 48 + 1)

Text1.Text = ""

Text1.SetFocus

Case Is >0

z = MsgBox("你猜数小了,请重猜。注意:你只有三次机会", 48 + 1)

Text1.Text = ""

Text1.SetFocus

Case Else

z = MsgBox("恭喜你猜中了!", 1)

End Select

End Sub

Private Sub Command2_Click()

cishu = 0

Randomize Timer

x = Int((Rnd * 10) + 1)

End Sub

Private Sub Form_Load()

cishu = 0

Randomize Timer

x = Int((Rnd * 10) + 1)

End Sub

代码结束

http://hi.baidu.com/卓7358/

欢迎来我空间

哇,C语言直接写屏小游戏,这样写屏比较累啊。

.版本 2

.程序集 窗口程序集1

.程序集变量 电脑得分, 整数型

.程序集变量 自己得分, 整数型

.程序集变量 电脑出, 整数型, , , 1剪刀2布3石头

.子程序 __启动窗口_创建完毕

置随机数种子 (取启动时间 ())

_启动窗口.获取焦点 ()

.子程序 _按钮石头_被单击

电脑出 = 取随机数 (1, 3)

标签自己.标题 = “石头”

.如果 (电脑出 = 3)

标签对手.标题 = “石头”

信息框 (“平了!”, 0, )

.否则

.如果 (电脑出 = 1)

标签对手.标题 = “剪刀”

信息框 (“赢了!”, 0, )

自己得分 = 自己得分 + 1

.否则

标签对手.标题 = “布”

信息框 (“输了!”, 0, )

电脑得分 = 电脑得分 + 1

.如果结束

.如果结束

标签分.标题 = “比分 : ” + 到文本 (电脑得分) + “-” + 到文本 (自己得分)

标签自己.标题 = “”

标签对手.标题 = “”

_启动窗口.获取焦点 ()

.子程序 _按钮剪刀_被单击

电脑出 = 取随机数 (1, 3)

标签自己.标题 = “剪刀”

.如果 (电脑出 = 3)

标签对手.标题 = “石头”

信息框 (“输了!”, 0, )

电脑得分 = 电脑得分 + 1

.否则

.如果 (电脑出 = 1)

标签对手.标题 = “剪刀”

信息框 (“平了!”, 0, )

.否则

标签对手.标题 = “布”

信息框 (“赢了!”, 0, )

自己得分 = 自己得分 + 1

.如果结束

.如果结束

标签分.标题 = “比分 : ” + 到文本 (电脑得分) + “-” + 到文本 (自己得分)

标签自己.标谨陪题 = “”

标签对手.标题 = “”

_启动窗口.获取焦点 ()

.子程序 _按钮布_被单击

电脑出 = 取随机数 (1, 3)

标签自己.标题 = “布”

.如果 (电脑出 = 3)

标签对手.标题 = “石头”

信息框 (“赢了!”, 0, )

自己得分 = 自己得分 + 1

.否则

.如果 (电脑出 = 1)

标签桥晌棚对手.标题 = “剪刀”

信息框 (“输了!”, 0, )

电脑得分 = 电脑得分 + 1

.否则

标签对手.标题 = “布”

信息框 (“平了!”, 0, )

.如果结束

.如果结束

标签分.标题 = “比分 : ” + 到文本 (电脑得分) + “-” + 到文本 (自己得分)

标签自己.标题 = “”

标签对手.标题 = “”

_启动窗口.获取焦敏则点 ()

.子程序 __启动窗口_放开某键, 逻辑型

.参数 键代码, 整数型

.参数 功能键状态, 整数型

.判断开始 (键代码 = #Z键)

_按钮石头_被单击 ()

.判断 (键代码 = #X键)

_按钮剪刀_被单击 ()

.判断 (键代码 = #C键)

_按钮布_被单击 ()

.默认

.判断结束

我的楼主可以自己玩一下

试试吧

#define N 200

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key

int score=0/*得分*/

int gamespeed=50000/*游戏速度自己调整*/

struct Food

{

int x/*食物的横坐标*/

int y/*食物的纵坐标*/

int yes/*判断是否要出现食物的变量*/

}food/*食物的结构体*/

struct Snake

{

int x[N]

int y[N]

int node/*蛇的节数*/

int direction/*蛇移动方向*/

int life/* 蛇的生命,0活着,1死亡*/

}snake

void Init(void)/*图形驱动*/

void Close(void)/*图形结束*/

void DrawK(void)/*开始画面*/

void GameOver(void)/*结束游戏*/

void GamePlay(void)/*玩游戏具体过程*/

void PrScore(void)/*输出成绩*/

/*主函数*/

void main(void)

{

Init()/*图形驱动*/

DrawK()/*开始画面*/

GamePlay()/*玩游戏具体过程*/

Close()/*图形结束*/

}

/*图形驱动*/

void Init(void)

{

int gd=DETECT,gm

initgraph(&gd,&gm,"c:\\tc")

cleardevice()

}

/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/

void DrawK(void)

{

/*setbkcolor(LIGHTGREEN)*/

setcolor(11)

setlinestyle(SOLID_LINE,0,THICK_WIDTH)/*设置线型*/

for(i=50i<=600i+=10)/*画围墙*/

{

rectangle(i,40,i+10,49)/*上边*/

rectangle(i,451,i+10,460)/*下边*/

}

for(i=40i<=450i+=10)

{

rectangle(50,i,59,i+10)/*左边*/

rectangle(601,i,610,i+10)/*右边*/

}

}

/*玩游戏具体过程*/

void GamePlay(void)

{

randomize()/*随机数发生器*/

food.yes=1/*1表示需要出现新食物,0表示已经存在食耐码物*/

snake.life=0/*活着*/

snake.direction=1/*方向往右*/

snake.x[0]=100snake.y[0]=100/*蛇头*/

snake.x[1]=110snake.y[1]=100

snake.node=2/*节数*/

PrScore()/*输出得分*/

while(1)/*可以重复玩游戏,压ESC键结束*/

{

while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/

{

if(food.yes==1)/*需要出现新食物*/

{

food.x=rand()%400+60

food.y=rand()%350+60

while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

并闭food.x++

while(food.y%10!=0)

food.y++

food.yes=0/*画面上有食物了*/

}

if(food.yes==0)/*画面上有食物了就要显示*/

{

setcolor(GREEN)

 昌蔽哪 rectangle(food.x,food.y,food.x+10,food.y-10)

}

for(i=snake.node-1i>0i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/

{

snake.x[i]=snake.x[i-1]

snake.y[i]=snake.y[i-1]

}

/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/

switch(snake.direction)

{

case 1:snake.x[0]+=10break

case 2: snake.x[0]-=10break

case 3: snake.y[0]-=10break

case 4: snake.y[0]+=10break

}

for(i=3i<snake.nodei++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/

{

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

{

GameOver()/*显示失败*/

snake.life=1

break

}

}

if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||

snake.y[0]>455)/*蛇是否撞到墙壁*/

{

GameOver()/*本次游戏结束*/

snake.life=1/*蛇死*/

}

if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/

break

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/

{

setcolor(0)/*把画面上的食物东西去掉*/

rectangle(food.x,food.y,food.x+10,food.y-10)

snake.x[snake.node]=-20snake.y[snake.node]=-20

/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

snake.node++/*蛇的身体长一节*/

food.yes=1/*画面上需要出现新的食物*/

score+=10

PrScore()/*输出新得分*/

}

setcolor(4)/*画出蛇*/

for(i=0i<snake.nodei++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

snake.y[i]-10)

delay(gamespeed)

setcolor(0)/*用黑色去除蛇的的最后一节*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10)

} /*endwhile(!kbhit)*/

if(snake.life==1)/*如果蛇死就跳出循环*/

break

key=bioskey(0)/*接收按键*/

if(key==ESC)/*按ESC键退出*/

break

else

if(key==UP&&snake.direction!=4)

/*判断是否往相反的方向移动*/

snake.direction=3

else

if(key==RIGHT&&snake.direction!=2)

snake.direction=1

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4

}/*endwhile(1)*/

}

/*游戏结束*/

void GameOver(void)

{

cleardevice()

PrScore()

setcolor(RED)

settextstyle(0,0,4)

outtextxy(200,200,"GAME OVER")

getch()

}

/*输出成绩*/

void PrScore(void)

{

char str[10]

setfillstyle(SOLID_FILL,YELLOW)

bar(50,15,220,35)

setcolor(6)

settextstyle(0,0,2)

sprintf(str,"score:%d",score)

outtextxy(55,20,str)

}

/*图形结束*/

void Close(void)

{

getch()

closegraph()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12271733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存