求一个用C语言编写的小游戏代码

核心提示#include <graphicsh>#include <conioh>#include <timeh>/////////////////////////////////////////////// 定义常量、枚举量、结构体、全局变量//

#include <graphicsh>

#include <conioh>

#include <timeh>

/////////////////////////////////////////////

// 定义常量、枚举量、结构体、全局变量

/////////////////////////////////////////////

#define WIDTH 10 // 游戏区宽度

#define HEIGHT 22 // 游戏区高度

#define SIZE 20 // 每个游戏区单位的实际像素

// 定义操作类型

enum CMD

{

CMD_ROTATE, // 方块旋转

CMD_LEFT, CMD_RIGHT, CMD_DOWN, // 方块左、右、下移动

CMD_SINK, // 方块沉底

CMD_QUIT // 退出游戏

};

// 定义绘制方块的方法

enum DRAW

{

SHOW, // 显示方块

HIDE, // 隐藏方块

FIX // 固定方块

};

// 定义七种俄罗斯方块

struct BLOCK

{

WORD dir[4]; // 方块的四个旋转状态

COLORREF color; // 方块的颜色

} g_Blocks[7] = { {0x0F00, 0x4444, 0x0F00, 0x4444, RED}, // I

{0x0660, 0x0660, 0x0660, 0x0660, BLUE}, // 口

{0x4460, 0x02E0, 0x0622, 0x0740, MAGENTA}, // L

{0x2260, 0x0E20, 0x0644, 0x0470, YELLOW}, // 反L

{0x0C60, 0x2640, 0x0C60, 0x2640, CYAN}, // Z

{0x0360, 0x4620, 0x0360, 0x4620, GREEN}, // 反Z

{0x4E00, 0x4C40, 0x0E40, 0x4640, BROWN}}; // T

// 定义当前方块、下一个方块的信息

struct BLOCKINFO

{

byte id; // 方块 ID

char x, y; // 方块在游戏区中的坐标

byte dir:2; // 方向

} g_CurBlock, g_NextBlock;

// 定义游戏区

BYTE g_World[WIDTH][HEIGHT] = {0};

/////////////////////////////////////////////

// 函数声明

/////////////////////////////////////////////

void Init(); // 初始化游戏

void Quit(); // 退出游戏

void NewGame(); // 开始新游戏

void GameOver(); // 结束游戏

CMD GetCmd(); // 获取控制命令

void DispatchCmd(CMD _cmd); // 分发控制命令

void NewBlock(); // 生成新的方块

bool CheckBlock(BLOCKINFO _block); // 检测指定方块是否可以放下

void DrawBlock(BLOCKINFO _block, DRAW _draw = SHOW); // 画方块

void onRotate(); // 旋转方块

void OnLeft(); // 左移方块

void OnRight(); // 右移方块

void onDown(); // 下移方块

void onSink(); // 沉底方块

/////////////////////////////////////////////

// 函数定义

/////////////////////////////////////////////

// 主函数

void main()

{

Init();

CMD c;

while(true)

{

c = GetCmd();

DispatchCmd(c);

// 按退出时,显示对话框咨询用户是否退出

if (c == CMD_QUIT)

{

HWND wnd = GetHWnd();

if (MessageBox(wnd, _T("您要退出游戏吗?"), _T("提醒"), MB_OKCANCEL | MB_ICONQUESTION) == IDOK)

Quit();

}

}

}

// 初始化游戏

void Init()

{

initgraph(640, 480);

srand((unsigned)time(NULL));

// 显示操作说明

setfont(14, 0, _T("宋体"));

outtextxy(20, 330, _T("操作说明"));

outtextxy(20, 350, _T("上:旋转"));

outtextxy(20, 370, _T("左:左移"));

outtextxy(20, 390, _T("右:右移"));

outtextxy(20, 410, _T("下:下移"));

outtextxy(20, 430, _T("空格:沉底"));

outtextxy(20, 450, _T("ESC:退出"));

// 设置坐标原点

setorigin(220, 20);

// 绘制游戏区边界

rectangle(-1, -1, WIDTH SIZE, HEIGHT SIZE);

rectangle((WIDTH + 1) SIZE - 1, -1, (WIDTH + 5) SIZE, 4 SIZE);

// 开始新游戏

NewGame();

}

// 退出游戏

void Quit()

{

closegraph();

exit(0);

}

// 开始新游戏

void NewGame()

{

// 清空游戏区

setfillstyle(BLACK);

bar(0, 0, WIDTH SIZE - 1, HEIGHT SIZE - 1);

ZeroMemory(g_World, WIDTH HEIGHT);

// 生成下一个方块

g_NextBlockid = rand() % 7;

g_NextBlockdir = rand() % 4;

g_NextBlockx = WIDTH + 1;

g_NextBlocky = HEIGHT - 1;

// 获取新方块

NewBlock();

}

// 结束游戏

void GameOver()

{

HWND wnd = GetHWnd();

if (MessageBox(wnd, _T("游戏结束。n您想重新来一局吗?"), _T("游戏结束"), MB_YESNO | MB_ICONQUESTION) == IDYES)

NewGame();

else

Quit();

}

// 获取控制命令

DWORD m_oldtime;

CMD GetCmd()

{

// 获取控制值

while(true)

{

// 如果超时,自动下落一格

DWORD newtime = GetTickCount();

if (newtime - m_oldtime >= 500)

{

m_oldtime = newtime;

return CMD_DOWN;

}

// 如果有按键,返回按键对应的功能

if (kbhit())

{

switch(getch())

{

case 'w':

case 'W': return CMD_ROTATE;

case 'a':

case 'A': return CMD_LEFT;

case 'd':

case 'D': return CMD_RIGHT;

case 's':

case 'S': return CMD_DOWN;

case 27: return CMD_QUIT;

case ' ': return CMD_SINK;

case 0:

case 0xE0:

switch(getch())

{

case 72: return CMD_ROTATE;

case 75: return CMD_LEFT;

case 77: return CMD_RIGHT;

case 80: return CMD_DOWN;

}

}

}

// 延时 (降低 CPU 占用率)

Sleep(20);

}

}

// 分发控制命令

void DispatchCmd(CMD _cmd)

{

switch(_cmd)

{

case CMD_ROTATE: onRotate(); break;

case CMD_LEFT: OnLeft(); break;

case CMD_RIGHT: OnRight(); break;

case CMD_DOWN: onDown(); break;

case CMD_SINK: onSink(); break;

case CMD_QUIT: break;

}

}

// 生成新的方块

void NewBlock()

{

g_CurBlockid = g_NextBlockid, g_NextBlockid = rand() % 7;

g_CurBlockdir = g_NextBlockdir, g_NextBlockdir = rand() % 4;

g_CurBlockx = (WIDTH - 4) / 2;

g_CurBlocky = HEIGHT + 2;

// 下移新方块直到有局部显示

WORD c = g_Blocks[g_CurBlockid]dir[g_CurBlockdir];

while((c & 0xF) == 0)

{

g_CurBlocky--;

c >>= 4;

}

// 绘制新方块

DrawBlock(g_CurBlock);

// 绘制下一个方块

setfillstyle(BLACK);

bar((WIDTH + 1) SIZE, 0, (WIDTH + 5) SIZE - 1, 4 SIZE - 1);

DrawBlock(g_NextBlock);

// 设置计时器,用于判断自动下落

m_oldtime = GetTickCount();

}

// 画方块

void DrawBlock(BLOCKINFO _block, DRAW _draw)

{

WORD b = g_Blocks[_blockid]dir[_blockdir];

int x, y;

int color = BLACK;

switch(_draw)

{

case SHOW: color = g_Blocks[_blockid]color; break;

case HIDE: color = BLACK; break;

case FIX: color = g_Blocks[_blockid]color / 3; break;

}

setfillstyle(color);

for(int i=0; i<16; i++)

{

if (b & 0x8000)

{

x = _blockx + i % 4;

y = _blocky - i / 4;

if (y < HEIGHT)

{

if (_draw != HIDE)

bar3d(x SIZE + 2, (HEIGHT - y - 1) SIZE + 2, (x + 1) SIZE - 4, (HEIGHT - y) SIZE - 4, 3, true);

else

bar(x SIZE, (HEIGHT - y - 1) SIZE, (x + 1) SIZE - 1, (HEIGHT - y) SIZE - 1);

}

}

b <<= 1;

}

}

// 检测指定方块是否可以放下

bool CheckBlock(BLOCKINFO _block)

{

WORD b = g_Blocks[_blockid]dir[_blockdir];

int x, y;

for(int i=0; i<16; i++)

{

if (b & 0x8000)

{

x = _blockx + i % 4;

y = _blocky - i / 4;

if ((x < 0) || (x >= WIDTH) || (y < 0))

return false;

if ((y < HEIGHT) && (g_World[x][y]))

return false;

}

b <<= 1;

}

return true;

}

// 旋转方块

void onRotate()

{

// 获取可以旋转的 x 偏移量

int dx;

BLOCKINFO tmp = g_CurBlock;

tmpdir++; if (CheckBlock(tmp)) { dx = 0; goto rotate; }

tmpx = g_CurBlockx - 1; if (CheckBlock(tmp)) { dx = -1; goto rotate; }

tmpx = g_CurBlockx + 1; if (CheckBlock(tmp)) { dx = 1; goto rotate; }

tmpx = g_CurBlockx - 2; if (CheckBlock(tmp)) { dx = -2; goto rotate; }

tmpx = g_CurBlockx + 2; if (CheckBlock(tmp)) { dx = 2; goto rotate; }

return;

rotate:

// 旋转

DrawBlock(g_CurBlock, HIDE);

g_CurBlockdir++;

g_CurBlockx += dx;

DrawBlock(g_CurBlock);

}

// 左移方块

void OnLeft()

{

BLOCKINFO tmp = g_CurBlock;

tmpx--;

if (CheckBlock(tmp))

{

DrawBlock(g_CurBlock, HIDE);

g_CurBlockx--;

DrawBlock(g_CurBlock);

}

}

// 右移方块

void OnRight()

{

BLOCKINFO tmp = g_CurBlock;

tmpx++;

if (CheckBlock(tmp))

{

DrawBlock(g_CurBlock, HIDE);

g_CurBlockx++;

DrawBlock(g_CurBlock);

}

}

// 下移方块

void onDown()

{

BLOCKINFO tmp = g_CurBlock;

tmpy--;

if (CheckBlock(tmp))

{

DrawBlock(g_CurBlock, HIDE);

g_CurBlocky--;

DrawBlock(g_CurBlock);

}

else

onSink(); // 不可下移时,执行“沉底方块”操作

}

// 沉底方块

void onSink()

{

int i, x, y;

// 连续下移方块

DrawBlock(g_CurBlock, HIDE);

BLOCKINFO tmp = g_CurBlock;

tmpy--;

while (CheckBlock(tmp))

{

g_CurBlocky--;

tmpy--;

}

DrawBlock(g_CurBlock, FIX);

// 固定方块在游戏区

WORD b = g_Blocks[g_CurBlockid]dir[g_CurBlockdir];

for(i = 0; i < 16; i++)

{

if (b & 0x8000)

{

if (g_CurBlocky - i / 4 >= HEIGHT)

{ // 如果方块的固定位置超出高度,结束游戏

GameOver();

return;

}

else

g_World[g_CurBlockx + i % 4][g_CurBlocky - i / 4] = 1;

}

b <<= 1;

}

// 检查是否需要消掉行,并标记

int row[4] = {0};

bool bRow = false;

for(y = g_CurBlocky; y >= max(g_CurBlocky - 3, 0); y--)

{

i = 0;

for(x = 0; x < WIDTH; x++)

if (g_World[x][y] == 1)

i++;

if (i == WIDTH)

{

bRow = true;

row[g_CurBlocky - y] = 1;

setfillstyle(WHITE, DIAGCROSS2_FILL);

bar(0, (HEIGHT - y - 1) SIZE + SIZE / 2 - 2, WIDTH SIZE - 1, (HEIGHT - y - 1) SIZE + SIZE / 2 + 2);

}

}

if (bRow)

{

// 延时 200 毫秒

Sleep(200);

// 擦掉刚才标记的行

IMAGE img;

for(i = 0; i < 4; i++)

{

if (row[i])

{

for(y = g_CurBlocky - i + 1; y < HEIGHT; y++)

for(x = 0; x < WIDTH; x++)

{

g_World[x][y - 1] = g_World[x][y];

g_World[x][y] = 0;

}

getimage(&img, 0, 0, WIDTH SIZE, (HEIGHT - (g_CurBlocky - i + 1)) SIZE);

putimage(0, SIZE, &img);

}

}

}

// 产生新方块

NewBlock();

}

用C++编写的小游戏源代码

如果您想使用微信火柴人小游戏代码,可以参考以下步骤:

1 确保您的微信版本已经是最新的,并且已经打开了游戏中心功能。

2 打开微信,点击“游戏中心”进入游戏列表界面,搜索“火柴人”游戏并点击进入。

3 在游戏界面中,点击右上角的“···”图标,再点击“复制链接”获得小游戏链接。

4 将链接发送给您的好友,您和好友即可使用微信内置的小游戏功能进行游戏。

需要注意的是,微信火柴人小游戏代码主要可以通过复制链接的方式进行使用,不建议自行抄袭、篡改或分发其他人的游戏代码,以免侵犯游戏版权和著作权,同时也可能违反相关的法律法规。如果您想定制个性化的游戏或需要其他的开发支持,请咨询专业的游戏开发团队或相关的技术支持机构。

求一C++小游戏源代码 简单点的?!!谢谢

五子棋的代码:

#include<iostream>

#include<stdioh>

#include<stdlibh>

#include<timeh>

usingnamespacestd;

constintN=15;         //1515的棋盘

constcharChessBoardflag='';     //棋盘标志

constcharflag1='o';       //玩家1或电脑的棋子标志

constcharflag2='X';       //玩家2的棋子标志

typedefstructCoordinate     //坐标类

{  

intx;             //代表行

inty;             //代表列

}Coordinate;

classGoBang          //五子棋类

{ 

public:

GoBang()        //初始化

{

InitChessBoard();

}

voidPlay()        //下棋

{

CoordinatePos1;   //玩家1或电脑

CoordinatePos2;   //玩家2

intn=0;

while(1)

{

intmode=ChoiceMode();

while(1)

{

if(mode==1)    //电脑vs玩家

{

ComputerChess(Pos1,flag1);   //电脑下棋

if(GetVictory(Pos1,0,flag1)==1)   //0表示电脑,真表示获胜

break;

PlayChess(Pos2,2,flag2);   //玩家2下棋

if(GetVictory(Pos2,2,flag2))   //2表示玩家2

break;

}

else      //玩家1vs玩家2

{

PlayChess(Pos1,1,flag1);   //玩家1下棋

if(GetVictory(Pos1,1,flag1))   //1表示玩家1

break;

PlayChess(Pos2,2,flag2);   //玩家2下棋

if(GetVictory(Pos2,2,flag2)) //2表示玩家2

break;

}

}

cout<<"再来一局"<<endl;

cout<<"yorn:";

charc='y';

cin>>c;

if(c=='n')

break;

}    

}

protected:

intChoiceMode()      //选择模式

{

inti=0;

system("cls");    //系统调用,清屏

InitChessBoard();    //重新初始化棋盘

cout<<"0、退出 1、电脑vs玩家 2、玩家vs玩家"<<endl;

while(1)

{

cout<<"请选择:";

cin>>i;

if(i==0)     //选择0退出

exit(1);

if(i==1||i==2)

returni;

cout<<"输入不合法"<<endl;

}

}

voidInitChessBoard()   //初始化棋盘

{

for(inti=0;i<N+1;++i)    

{

for(intj=0;j<N+1;++j)

{

_ChessBoard[i][j]=ChessBoardflag;

}

}

}

voidPrintChessBoard()  //打印棋盘,这个函数可以自己调整

{

system("cls");        //系统调用,清空屏幕

for(inti=0;i<N+1;++i)

{

for(intj=0;j<N+1;++j)

{

if(i==0)                //打印列数字

{

if(j!=0)

printf("%d ",j);

else

printf("  ");

}

elseif(j==0)        //打印行数字

printf("%2d",i);

else

{

if(i<N+1)

{

printf("%c|",_ChessBoard[i][j]);

}

}

}

cout<<endl;

cout<<"  ";

for(intm=0;m<N;m++)

{

printf("--|");

}

cout<<endl;

}

}

voidPlayChess(Coordinate&pos,intplayer,intflag)    //玩家下棋

{

PrintChessBoard();     //打印棋盘

while(1)

{

printf("玩家%d输入坐标:",player);

cin>>posx>>posy;

if(Judgevalue(pos)==1)     //坐标合法

break;

cout<<"坐标不合法,重新输入"<<endl;

}

_ChessBoard[posx][posy]=flag;

}

voidComputerChess(Coordinate&pos,charflag)    //电脑下棋

{

PrintChessBoard();     //打印棋盘

intx=0;

inty=0;

while(1)

{

x=(rand()%N)+1;   //产生1~N的随机数

srand((unsignedint)time(NULL));

y=(rand()%N)+1;   //产生1~N的随机数

srand((unsignedint)time(NULL));

if(_ChessBoard[x][y]==ChessBoardflag)   //如果这个位置是空的,也就是没有棋子

break;

}

posx=x;

posy=y;

_ChessBoard[posx][posy]=flag;

}

intJudgevalue(constCoordinate&pos)    //判断输入坐标是不是合法

{

if(posx>0&&posx<=N&&posy>0&&posy<=N)

{

if(_ChessBoard[posx][posy]==ChessBoardflag)

{

return1;  //合法

}

}

return0;    //非法

}

intJudgeVictory(Coordinatepos,charflag)      //判断有没有人胜负(底层判断)

{

intbegin=0;

intend=0;

intbegin1=0;

intend1=0;

//判断行是否满足条件

(posy-4)>0begin=(posy-4):begin=1;

(posy+4)>Nend=N:end=(posy+4);

for(inti=posx,j=begin;j+4<=end;j++)

{

if(_ChessBoard[i][j]==flag&&_ChessBoard[i][j+1]==flag&&

_ChessBoard[i][j+2]==flag&&_ChessBoard[i][j+3]==flag&&

_ChessBoard[i][j+4]==flag)

return1;

}

//判断列是否满足条件

(posx-4)>0begin=(posx-4):begin=1;

(posx+4)>Nend=N:end=(posx+4);

for(intj=posy,i=begin;i+4<=end;i++)

{

if(_ChessBoard[i][j]==flag&&_ChessBoard[i+1][j]==flag&&

_ChessBoard[i+2][j]==flag&&_ChessBoard[i+3][j]==flag&&

_ChessBoard[i+4][j]==flag)

return1;

}

intlen=0;

//判断主对角线是否满足条件

posx>posylen=posy-1:len=posx-1;

if(len>4)

len=4;

begin=posx-len;    //横坐标的起始位置

begin1=posy-len;   //纵坐标的起始位置

posx>posylen=(N-posx):len=(N-posy);

if(len>4)

len=4;

end=posx+len;    //横坐标的结束位置

end1=posy+len;   //纵坐标的结束位置

for(inti=begin,j=begin1;(i+4<=end)&&(j+4<=end1);++i,++j)

{

if(_ChessBoard[i][j]==flag&&_ChessBoard[i+1][j+1]==flag&&

_ChessBoard[i+2][j+2]==flag&&_ChessBoard[i+3][j+3]==flag&&

_ChessBoard[i+4][j+4]==flag)

return1;

}

//判断副对角线是否满足条件

(posx-1)>(N-posy)len=(N-posy):len=posx-1;

if(len>4)

len=4;

begin=posx-len;    //横坐标的起始位置

begin1=posy+len;   //纵坐标的起始位置

(N-posx)>(posy-1)len=(posy-1):len=(N-posx);

if(len>4)

len=4;

end=posx+len;    //横坐标的结束位置

end1=posy-len;   //纵坐标的结束位置

for(inti=begin,j=begin1;(i+4<=end)&&(j-4>=end1);++i,--j)

{

if(_ChessBoard[i][j]==flag&&_ChessBoard[i+1][j-1]==flag&&

_ChessBoard[i+2][j-2]==flag&&_ChessBoard[i+3][j-3]==flag&&

_ChessBoard[i+4][j-4]==flag)

return1;

}

for(inti=1;i<N+1;++i)      //棋盘有没有下满

{

for(intj=1;j<N+1;++j)

{

if(_ChessBoard[i][j]==ChessBoardflag)

return0;           //0表示棋盘没满

} 

}

return-1;   //和棋

}

boolGetVictory(Coordinate&pos,intplayer,intflag)  //对JudgeVictory的一层封装,得到具体那个玩家获胜

{

intn=JudgeVictory(pos,flag);  //判断有没有人获胜

if(n!=0)          //有人获胜,0表示没有人获胜

{

PrintChessBoard();

if(n==1)        //有玩家赢棋

{

if(player==0)   //0表示电脑获胜,1表示玩家1,2表示玩家2

printf("电脑获胜n");

else

printf("恭喜玩家%d获胜n",player);

}

else

printf("双方和棋n");

returntrue;   //已经有人获胜

}

returnfalse;  //没有人获胜

}

private:

char_ChessBoard[N+1][N+1];    

};

扩展资料:

设计思路

1、进行问题分析与设计,计划实现的功能为,开局选择人机或双人对战,确定之后比赛开始。

2、比赛结束后初始化棋盘,询问是否继续比赛或退出,后续可加入复盘、悔棋等功能。

3、整个过程中,涉及到了棋子和棋盘两种对象,同时要加上人机对弈时的AI对象,即涉及到三个对象。

手机点开直接能玩的小游戏代码

#include<graphicsh>

#include<stdlibh>

#include<dosh>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key;

int score=0;

int gamespeed=32000;

struct Food /食物的结构体/

{

int x; /食物的横坐标/

int y; /食物的纵坐标/

int yes; /食物是否出现的变量/

}food;

struct Snack /蛇的结构体/

{

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 PrScore(void); /分数输出函数/

DELAY(char ch)/调节游戏速度/

{

if(ch=='3')

{

delay(gamespeed); /delay是延迟函数/

delay(gamespeed);

}

else if(ch=='2')

{

delay(gamespeed);

}

}

Menu()/游戏开始菜单/

{

char ch;

printf("Please choose the gamespeed:n");

printf("1-Fast 2-Normal 3-Slown");

printf("nPlease Press The numbersn");

do

{ch=getch();}

while(ch!='1'&&ch!='2'&&ch!='3');

clrscr();

return(ch);

}

/主函数/

void main(void)

{

int ch;

ch=Menu();

Init();

DrawK();

GamePlay(ch);

Close();

}

void Init(void)

{

int gd=DETECT,gm;

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

cleardevice();

}

void DrawK(void)

{

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

for(i=50;i<=600;i+=10)

{

rectangle(i,40,i+10,49); /画出上边框/

rectangle(i,451,i+10,460); /画出下边框/

}

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

{

rectangle(50,i,59,i+10); /画出左边框/

rectangle(601,i,610,i+10); /画出右边框/

}

}

void GamePlay(char ch)

{

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

foodyes=1; /1代表要出现食物,0表示以存在食物/

snakelife=0;

snakedirection=1;

snakex[0]=100;snakey[0]=100;

snakex[1]=110;snakey[1]=100;

snakenode=2;

PrScore();

while(1) /可以重复游戏/

{

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

{

if(foodyes==1) /需要食物/

{

foodx=rand()%400+60;

foody=rand()%350+60; /使用rand函数随机产生食物坐标/

while(foodx%10!=0)

foodx++;

while(foody%10!=0)

foody++; /判断食物是否出现在整格里/

foodyes=0; /现在有食物了/

}

if(foodyes==0) /有食物了就要显示出来/

{

setcolor(GREEN);

rectangle(foodx,foody,foodx+10,foody-10);

}

for(i=snakenode-1;i>0;i--) /贪吃蛇的移动算法/

{

snakex[i]=snakex[i-1];

snakey[i]=snakey[i-1]; /贪吃蛇的身体移动算法/

}

switch(snakedirection) /贪吃蛇的头部移动算法,以此来控制移动/

{

case 1:snakex[0]+=10;break;

case 2:snakex[0]-=10;break;

case 3:snakey[0]-=10;break;

case 4:snakey[0]+=10;break;

}

for(i=3;i<snakenode;i++) /判断是否头部与身体相撞/

{

if(snakex[i]==snakex[0]&&snakey[i]==snakey[0])

{

GameOver();

snakelife=1;

break;

}

}

/下面是判断是否撞到墙壁/

if(snakex[0]<55||snakex[0]>595||snakey[0]<55||snakey[0]>455)

{

GameOver();

snakelife=1;

}

if(snakelife==1) /如果死亡就退出循环/

break;

if(snakex[0]==foodx&&snakey[0]==foody) /判断蛇是否吃到食物/

{

setcolor(0);

rectangle(foodx,foody,foodx+10,foody-10); /吃的食物后用黑色将食物擦去/

snakex[snakenode]=-20;snakey[snakenode]=-20; /现把增加的一节放到看不到的地方去/

snakenode++;

foodyes=1;

score+=10;

PrScore();

}

setcolor(4); /每次移动后将后面的身体擦去/

for(i=0;i<snakenode;i++)

rectangle(snakex[i],snakey[i],snakex[i]+10,snakey[i]-10);

delay(gamespeed);

DELAY(ch);

setcolor(0);

rectangle(snakex[snakenode-1],snakey[snakenode-1],snakex[snakenode-1]+10,snakey[snakenode-1]-10);

}

if(snakelife==1)

break;

key=bioskey(0); /接受按键/

if(key==ESC)

break;

else

if(key==UP&&snakedirection!=4)/判断是否改变方向/

snakedirection=3;

else

if(key==RIGHT&&snakedirection!=2)

snakedirection=1;

else

if(key==LEFT&&snakedirection!=1)

snakedirection=2;

else

if(key==DOWN&&snakedirection!=3)

snakedirection=4;

}

}

void GameOver(void)

{

cleardevice();

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,"scord:%d",score);

outtextxy(55,20,str);

}

void Close(void)

{

getch();

closegraph();

}

贪吃蛇

用powerbuilder写小游戏代码?

您好,亲。这个有1 ant 蚂蚁2 bagels 百吉饼另外贪吃蛇,吃豆子都是可以的,直接代码就可以玩,很高兴回答你的问题,记得采纳哦,谢谢。

问题还没解决?快来咨询专业答主~

输入代码即可玩的小游戏

在线

2455位答主在线答

服务保障

专业

响应快

马上提问

40345人对答主服务作出评价

回答切中要害 老师态度很好 回答专业迅速 回答很耐心认真 大平台保障,服务好 回答切中要害 老师态度很好 回答专业迅速 回答很耐心认真 大平台保障,服务好

抢首赞

分享评论

幻想不设限!福利不设限!新人专享送40连抽,附带海量元宝!

三国志幻想大陆iOS

立即下载

三国志幻想大陆广告

2022传奇手游,刀刀切割,0元打金,超高爆率,装备回收自由交易

00:29

冰雪复古

立即下载

冰雪复古:打金加强版广告

可以玩游戏的代码

电动轿车就吃奶茶

数码发烧友

您好亲,微信游戏机代码 - 你知道吗 只需要一串神秘代码 and 你只需在Vx输入这串代码 “332” acccttop/332 然后发送 就可以玩各种经典小游戏了

要使用PowerBuilder开发小型游戏,您可以使用PowerBuilder IDE创建一个新项目并设计游戏的用户界面。然后,您可以使用Powerscript来实现游戏的逻辑。

下面是一个示例代码片段,演示如何在PowerBuilder中创建一个简单的游戏:

// Declare variables

integer score = 0

integer lives = 3

integer speed = 5

// Create game window

window w_game

w_gamecreate("Game Window", 0, 0, 640, 480)

// Create game objects

oleobject ball

ball = create oleobject

ballconnecttonewobject("MSComctlLibListViewCtrl2")

ballobjectlistview = true

ballobjectview = 1

ballobjectcolumnheadersadd(1, "Score")

ballobjectcolumnheadersadd(2, "Lives")

ballobjectcolumnheadersadd(3, "Speed")

ballobjectadditem("", 1)

ballobjectadditem("", 2)

ballobjectadditem("", 3)

// Game loop

do while true

    // Move game objects

    ballobjectlistitems[1]subitems[1] = string(score)

    ballobjectlistitems[2]subitems[1] = string(lives)

    ballobjectlistitems[3]subitems[1] = string(speed)

    // Check for collisions

    if ballobjecttop <= 0 or ballobjecttop + ballobjectheight >= w_gameheight then

        speed = -speed

    end if

    // Update score and lives

    score = score + 1

    lives = lives - 1

    // Check for game over

    if lives <= 0 then

        messagebox("Game Over", "You Lose!")

        exit

    end if

    // Wait for next frame

    sleep(1000 / 60)

loop

在这个代码片段中,我们首先声明游戏的分数、生命和速度的变量。然后,我们使用window关键字创建一个新的游戏窗口,并使用oleobject关键字创建游戏对象。然后,我们使用do while关键字进入游戏循环,移动游戏对象,检查碰撞,并更新分数和生命。我们还会检查游戏是否结束,如果玩家输了,我们会显示一个消息框。

 
友情链接
鄂ICP备19019357号-22