×

windows编程小游戏代码

windows编程小游戏代码(做小游戏的代码)

admin admin 发表于2023-04-02 04:16:11 浏览67 评论0

抢沙发发表评论

本文目录一览:

求一个简单的C语言游戏24点的编程代码。可以在WIN-TC上面运行的

刚修改了下,可以用了~~~~~~~挺好玩的

/*C++实现的扑克二十四点游戏*/

#includeiostream

#includestring

#includetime.h

using namespace std;

#define NUM 1000

int j=2;//定义为全局变量

int randNum[NUM];//因为rand()函数有一定的缺陷,所以在程序中定义了randNum数组来存放随机数

//即使使用了种子函数srand(),由于程序运行时间比较短,也不太好设置种子。因此使用数组来存放随机数

class Poker

{

private:

int poker[53]; //扑克

int pokerValue[53]; //扑克代表的数值

string pokerName[53]; //扑克名

int money; //玩家钱数

int bet; //玩家的赌注

int pokerF[5]; //玩家手中的牌 F:Farmer L:Landlord

int pokerL[5]; //庄家手中的牌 F:Farmer L:Landlord

int pokerNumF; //玩家手中的牌数

int pokerNumL; //庄家手中的牌数

public:

Poker(); //构造函数,对牌初始化

void initPoker(); //洗牌,在每轮游戏开始前进行

string getPokerF(); //用字符串的形式返回玩家的牌

string getPokerL(); //用字符串的形式返回庄家的牌

int getSumF(); //返回玩家牌的点数,用以判断是否超过21点

int getSumL(); //返回庄家牌的点数

void farmerAsk(); //玩家要牌

void landlordAsk(); //庄家要牌

void inputBet(); //玩家输入赌注

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

void landlordProcess(); //在玩家不要牌时进行处理

};

Poker::Poker()

{

int i=0;

poker[0]=0;

for(i=1;i=13;i++) //|

{ //|

poker[i]=i; //|用构造函数对牌初始化

poker[i+13]=i; //|

poker[i+26]=i; //|

poker[i+39]=i; //|

}//for结束

pokerValue[0]=0;

for(i=1;i=52;i++)

{

if(poker[i]=10) pokerValue[i]=poker[i];

else pokerValue[i]=10;

}//for结束

pokerName[0]="";

for(i=0;i4;i++)

{

pokerName[1+13*i]="A";

pokerName[2+13*i]="2";

pokerName[3+13*i]="3";

pokerName[4+13*i]="4";

pokerName[5+13*i]="5";

pokerName[6+13*i]="6";

pokerName[7+13*i]="7";

pokerName[8+13*i]="8";

pokerName[9+13*i]="9";

pokerName[10+13*i]="10";

pokerName[11+13*i]="J";

pokerName[12+13*i]="Q";

pokerName[13+13*i]="K";

}//for结束

money=200; //玩家开始玩游戏时钱数是200

bet=0;

for(i=0;i5;i++)

{

pokerF[i]=0; //|对pokerOfFarmer初始化

pokerL[i]=0; //|对pokerOfLandlord初始化

}

pokerNumF=0;//玩家手中的牌数初始化为0

pokerNumL=0;//庄家手中的牌数初始化为0

srand((int)time(0));

for(i=0;iNUM;i++)

{

randNum[i]=rand()*51/32767+1;//产生随机数数组

}

}//构造函数Poker()结束

void Poker::initPoker()

{

cout"新一局游戏开始,开始洗牌"endl;

pokerF[0]=randNum[j++]; //产生1-52的随机数

pokerF[1]=randNum[j++]; //产生1-52的随机数

pokerL[0]=randNum[j++]; //产生1-52的随机数

pokerL[1]=randNum[j++]; //产生1-52的随机数

pokerNumF=2;

pokerNumL=2;

cout"洗牌完成,你的牌为:"getPokerF()endl;

}//void Poker::initPoker()结束

string Poker::getPokerF()//用字符串的形式返回玩家的牌

{

int i;

string result="";

for(i=0;ipokerNumF;i++)

result=result+pokerName[pokerF[i]]+" ";

return result;

}//string Poker::getPokerF()结束

string Poker::getPokerL()//用字符串的形式返回庄家的牌

{

int i;

string result="";

for(i=0;ipokerNumL;i++)

result=result+pokerName[pokerL[i]]+" ";

return result;

}//string Poker::getPokerL()结束

int Poker::getSumF() //返回玩家的总点数

{

int result=0;

for(int i=0;ipokerNumF;i++)

result=result+pokerValue[pokerF[i]];

return result;

}

int Poker::getSumL()//返回庄家的总点数

{

int result=0;

for(int i=0;ipokerNumL;i++)

result=result+pokerValue[pokerL[i]];

return result;

}

void Poker::farmerAsk()

{

if(pokerNumF=5)

{

cout"你的牌数已够5张,不能再要牌了"endl;

landlordProcess();

}

else

{

pokerF[pokerNumF++]=randNum[j++]; //产生1-52的随机数

cout"你的牌为:"getPokerF()endl;

if(getSumF()24)

{

cout"你撑死了,你输了"bet"元"endl;

money=money-bet;

if(money=0)

{

cout"你已经输光了,哈哈"endl;

cout"游戏结束"endl;

exit(0);

}

inputBet();

initPoker();

}

else if(getSumF()==24)

{

landlordProcess();

}

}

}

void Poker::landlordAsk()

{

if(pokerNumL=5)

{

if(getSumF()getSumL())

{

cout"庄家的牌为"getPokerL()endl;

cout"你赢了,你赢了"bet"元"endl;

money=money+bet;

inputBet();

initPoker();

}

else if(getSumF()==getSumL())

{

cout"庄家的牌为"getPokerL()endl;

cout"平手"endl;

inputBet();

initPoker();

}

else if(getSumF()getSumL())

{

cout"庄家的牌为"getPokerL()endl;

cout"你输了,你输了"bet"元"endl;

money=money-bet;

if(money=0)

{

cout"你已经输光了,哈哈"endl;

cout"游戏结束"endl;

exit(0);

}

inputBet();

initPoker();

}

}

else

{

pokerL[pokerNumL++]=randNum[j++]; //产生1-52的随机数

if(getSumL()24)

{

cout"庄家的牌为"getPokerL()endl;

cout"庄家撑死了,你赢了"bet"元"endl;

money=money+bet;

inputBet();

initPoker();

}

else landlordProcess();

}

}

void Poker::inputBet()

{

cout"你现在有"money"元,请输入赌注:";

do

{

cinbet;

if(betmoney)

cout"笨蛋,你没那么多钱,少来,重新输入吧:";

}while(betmoney);

}

void Poker::newGame()

{

inputBet();

initPoker();

cout"你得到的牌为:"getPokerF()endl;

}

void Poker::landlordProcess()

{

if(getSumL()=17)

{

if(getSumL()getSumF())

{

cout"庄家的牌为"getPokerL()endl;

cout"庄家获胜,你输了"bet"元"endl;

money=money-bet;

if(money=0)

{

cout"你已经输光了,哈哈"endl;

cout"游戏结束"endl;

exit(0);

}

inputBet();

initPoker();

}

else if(getSumF()==getSumL())

{

cout"庄家的牌为"getPokerL()endl;

cout"本次游戏平手"endl;

inputBet();

initPoker();

}

else

{

cout"庄家的牌为"getPokerL()endl;

cout"你赢了,你赢了"bet"元"endl;

money=money+bet;

inputBet();

initPoker();

}

}

else

{

landlordAsk();

}

}

int main()

{

int choose=1;

Poker poker;

cout"****************** 欢迎玩二十四点游戏 ******************"endlendl;

poker.inputBet();

poker.initPoker(); //洗牌

while(choose==1||choose==2||choose==3||choose==4)

{

cout"1.要牌 2.不要牌 3.重新开始 4.退出 请输入数字选择操作:";

cinchoose;

if(choose==1) poker.farmerAsk();

else if(choose==2) poker.landlordProcess();

else if(choose==3) poker.newGame();

else if(choose==4) exit(0);

}

return 0;

}//main函数结束

如何编写游戏

问题一:如何编写简单的游戏程序? stone.cpp

#include

#include

#include

#include

#include

#include

#include

const int Timer=0x1c;

int count;

int board[20][10];

const int ESC=0x11b,ENTER=0x1c0d,

UP=0x4800,DOWN=0x5000,LEFT=0x4b00,RIGHT=0x4d00;

void *** yze(int shapeNum,int (*result)[2]);

void drawShape(int screenX,int screenY,int shapeNum,int fillColor);

void prepare();

void interrupt (*oldHandle)(...);

void interrupt newHandle(...);

void setNewVect();

void recoverOldVect();

int afterChange(int boardX,int boardY,int shapeNum,int key);

int deleteRow(int boardX,int shapeNum);

int rowFull(int row);

void fillBoard(int boardX,int boardY,int shapeNum);

void main()

{ int driver,mode,errorCode;

driver=DETECT;

mode=0;

initgraph(driver,mode,);

errorCode=graphresult();

if(errorCode){

cerr 8410,5421,9540,6510,8541,6541,8540,5210,9541};

randomize(); ......

问题二:怎么编写一个游戏 要编写游戏,首先得学会几门编程语言. 编程主要语言有:C#,VisualC ,VisualBasic,Delphi...等. 如果是新手,建议学VisualBasic6.0 下面简单介绍一下VisualBasic. 随着VisualBasic的逐步发展完善和功能的不断括展,很多软件开发人员利用VisualBasic开发了大量的应用软件。VisualBasic已经成为使用人数最多,应用领域最广的程序设计语言和软件开发工具. 特点: 1.面向对象和可视化的程序设计. VisualBasic实现了对象的封装,是程序员只需把注意力集中到对象的设计.特别是对程序界面的设计. 2.事件驱动的运行机制. VisualBasic程序是在Windwos环境下开发的,因此其运行机制是事件驱动的。也就是只有发生某个动作 (如按下某键,鼠标移动等动作时发生的变化等),才会执行相应的程序段.这种机制使人机交互更为方便,程序的功能大大加强,也为多任务运行方式提供了保证. 3.结构化的程序设计语言. 在程序结构方面,VisualBasic继承了QBasic的所有优点,不但完全符合结构化程序设计的要求,而且具有较 强的数值运算和字符串的处理能力. 4.多种数据库访问能力. VisualBasic具有很强的数据库访问能力,不但能方便的处理诸如VisualFoxFro,Access,等小型数据库 中的数据,还可以轻松访问MicrosoftSQLServer等大中型数据库中的数据. 5.提供了功能完备的应用程序集成开发环境. VisualBasic的集成开发环境用户界面,代码编写,调试运行和编译打包等诸多功能于一体,为程序员提供了一 整套功能强大的应用程序开发环境. 6.方便使用的联机帮助功能. 利用集成开发环境中的帮助菜单或F1功能键,用户可以随时获取和查阅有关的帮助信息(MSDN). 其易学易用,是新手的最好选择. VisualBasic6.0_SP6中文大企业版: 119.147.41.16/...1F7612 -windows编程小游戏代码

问题三:怎么编程游戏 5分 人能识别有意义的字母、数字组合,就是代码。电脑机器只能识别0和1的二进制数字组合。人写的代码不能直接被电脑识别,需要一个翻译的过程,这个过程叫编译,把对人有意义的代码转换为对电脑有意义的二进制码。你看到的游戏画面是电脑理解了这些二进制码之后的结果。电脑根据二进制码来进行游戏图像渲染、处理玩家的键盘鼠标操作信息。举个简单的例子吧,假设人写的代码如下:Action action = drawCar();boolean goLeftBool = getInputLeftArrow();if(goLeftBool){ action.setLocation(action.getLocation().getX()--, action.getLocation().getY());}这段代码大概意思是:画辆车,玩家按左,车往左走。编译之后形成下面这样的二进制码:00101010100001010111110111011010100001011001010111011111011010000111010101010110001010111101101011000101010101010110110110101010101010101100101011110101010110101010101011101101110110100101110101011001010110110110101010001010101011其中每行代表源代码中的一句。就像黑客帝国一样,哈哈。这样电脑才能理解。当然,这是个例子而已,真正编译出来的二进制码比这个要多得多! -windows编程小游戏代码

问题四:怎么编写一个游戏程序? 新手如何学习C语言 第一:一些概念。 C语言是一门程序设计语言,有一些标准,比较重要的是ANSI C(好像是C89)和C99。 数据结构包括逻辑结构和物理结构。逻辑结构是数据元素 *** 和定义在 *** 上的关系。物理结构是逻辑结构在计算机中的实现。 LCC、VC、TC、GCC都是C语言编译器,一般包括集成开发环境,编译器和链接器及辅助工具 我们书写的是C源程序,源程序通过编译器编译为中间文件,中间文件经链接器链接生成可执行文件。不同操作系统可执行文件不同。中间文件也有几个标准,微软使用的和Linux下通用的有差异。 第二:学习什么。 个人认为程序设计学习的重点放在数据结构的学习上,但是这种学习要有一个平台,比如C语言。 学习C语言首先要掌握基本语法,常量、变量、类型、及顺序结构、分支结构和循环结构的意义及用法。进一步学习构造类型如指针、结构、函数的意义和用法。 C语言提供一些标准函数以减轻程序设计工作量,这些函数我们自己也可以实现。即使不依靠函数库,只有编译器,理论上就足够了。事实上,提供的标准函数效率都很高,使用很频繁,没有自己实现的必要,所以掌握常用函数是非常必要的,但是要注意函数的适用范围。 继续学习因人而异,应该可以独立选择了。 第三:如何学习。 强调多实践,C语言的学习要经常上机,多写程序才能逐步提高。 推荐书籍:C Programming Languge。有中译本 -windows编程小游戏代码

求采纳

问题五:如何编程游戏 105分 用flash,Flas *** 设计的三大基本功能是整个Flas *** 设计知识体系中最重要、也是最基础的,包括:绘图和编辑图形、补间动画和遮罩。这是三个紧密相连的逻辑功能,并且这三个功能自Flash诞生以来就存在。 -windows编程小游戏代码

flash 8下载地址:

sky/soft/2491

问题六:如何编写手机游戏 要是能用问问让你学会了,软件工程师早就没饭吃了

问题七:怎样用C语言编写一个小游戏? #include

#include

#include

#include windows.h

void gotoxy(int x,int y) /*定义gotoxy函数*/

{ COORD c;

c.X=x-1;

c.Y=y-1;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);

}

int main()

{

struct point

{

int x, y;/*该点的位置,包括x坐标和y坐标*/

int xv, yv;/*该点在x轴,y轴的速度*/

}man;

long p;

man.x=man.y=20;

man.xv=man.yv=1;

system(cls);

p=1000000000000000;

while(p--)

{

if(p%50000)

continue;

gotoxy(man.x, man.y);/*把光标移到指定的坐标*/

printf( );/*输出一个空格,把先前的字符擦去*/

man.x += man.xv;/*水平方向按x轴的速度运动*/

man.y += man.yv;/*垂直方向按y轴的速度运动*/

if(man.x==0||man.x==80)

man.xv*=-1;

if(man.y==0||man.y==80)

man.yv*=-1;

gotoxy(man.x, man.y);

printf(%c\b, 2); /*输出ASCII码值为2的笑脸字符*/

}

getchar ();

return 0;

}

这个是一个会动的笑脸,你可以从最简单开始

问题八:怎么编写游戏程序? 这个坦白地说,非常难,但也不是不可以,就看你有没有恒心了。

需要学习JAVA SE的基础,包括AWT、SWING的一些知识,二进制与文本IO,3D图象,可能还涉及很多运算,包括声音与视频的输出,动画或flash的输出,甚至有可能要有与windows DirectX的交互。我在外面看攻有JAVA游戏编程方面的书,你可以买来看看-windows编程小游戏代码

问题九:一个游戏的程序怎么写 要具备两个要素 第一要知道游戏怎么玩即规则 第二要懂得计算机中的某一门语言 好了把游戏的规则通过计算机语言告诉给电脑 就可以了

问题十:如何编制游戏 诸如:C语言,帧绘制,素材拼接做mod,甚至CAD都行,方法实在太多,但也很复杂,非三言两语可以说明。

想要简单制作的话,使用游戏制作软件,如RPG maker, FPS maker。

c语言小游戏代码

最基础的贪吃蛇的代码

#includestdio.h

#includewindows.h//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。

#includeconio.h //用户通过按键盘产生的对应操作 (控制台)

#includestdlib.h

#includetime.h //日期和时间头文件

#define LEN 30

#define WID 25

int Snake[LEN][WID] = {0}; //数组的元素代表蛇的各个部位

char Sna_Hea_Dir = 'a';//记录蛇头的移动方向

int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置

int Snake_Len = 3;//记录蛇的长度

clock_t Now_Time;//记录当前时间,以便自动移动

int Wait_Time ;//记录自动移动的时间间隔

int Eat_Apple = 1;//吃到苹果表示为1

int Level ;

int All_Score = -1;

int Apple_Num = -1;

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄 windows.h

//句柄 :标志应用程序中的不同对象和同类对象中的不同的实例 方便操控,

void gotoxy(int x, int y)//设置光标位置

{

COORD pos = {x,y}; //定义一个字符在控制台屏幕上的坐标POS

SetConsoleCursorPosition(hConsole, pos); //定位光标位置的函数windows.h

}

void Hide_Cursor()//隐藏光标 固定函数

{

CONSOLE_CURSOR_INFO cursor_info = {1, 0};

SetConsoleCursorInfo(hConsole, cursor_info);

}

void SetColor(int color)//设置颜色

{

SetConsoleTextAttribute(hConsole, color);

//是API设置字体颜色和背景色的函数 格式:SetConsoleTextAttribute(句柄,颜色);

}

void Print_Snake()//打印蛇头和蛇的脖子和蛇尾

{

int iy, ix, color;

for(iy = 0; iy WID; ++iy)

for(ix = 0; ix LEN; ++ix)

{

if(Snake[ix][iy] == 1)//蛇头

{

SetColor(0xf); //oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数

gotoxy(ix*2, iy);

printf("※");

}

if(Snake[ix][iy] == 2)//蛇的脖子

{

color = rand()%15 + 1; //rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。

//头文件:stdlib.h

if(color == 14)

color -= rand() % 13 + 1; //变色

SetColor(color);

gotoxy(ix*2, iy);

printf("■");

}

if(Snake[ix][iy] == Snake_Len)

{

gotoxy(ix*2, iy);

SetColor(0xe);

printf("≈");

}

}

}

void Clear_Snake()//擦除贪吃蛇

{

int iy, ix;

for(iy = 0; iy WID; ++iy)

for(ix = 0; ix LEN; ++ix)

{

gotoxy(ix*2, iy);

if(Snake[ix][iy] == Snake_Len)

printf(" ");

}

}

void Rand_Apple()//随机产生苹果

{

int ix, iy;

do

{

ix = rand() % LEN;

iy = rand() % WID;

}while(Snake[ix][iy]);

Snake[ix][iy] = -1;

gotoxy(ix*2, iy);

printf("⊙");

Eat_Apple = 0;

}

void Game_Over()//蛇死掉了

{

gotoxy(30, 10);

printf("Game Over");

Sleep(3000);

system("pause nul");

exit(0);

}

void Move_Snake()//让蛇动起来

{

int ix, iy;

for(ix = 0; ix LEN; ++ix)//先标记蛇头

for(iy = 0; iy WID; ++iy)

if(Snake[ix][iy] == 1)

{

switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头

{

case 'w':

if(iy == 0)

Game_Over();

else

Sna_Hea_Y = iy - 1;

Sna_Hea_X = ix;

break;

case 's':

if(iy == (WID -1))

Game_Over();

else

Sna_Hea_Y = iy + 1;

Sna_Hea_X = ix;

break;

case 'a':

if(ix == 0)

Game_Over();

else

Sna_Hea_X = ix - 1;

Sna_Hea_Y = iy;

break;

case 'd':

if(ix == (LEN - 1))

Game_Over();

else

Sna_Hea_X = ix + 1;

Sna_Hea_Y = iy;

break;

default:

break;

}

}

if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1Snake[Sna_Hea_X][Sna_Hea_Y]!=0Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)-windows编程小游戏代码

Game_Over();

if(Snake[Sna_Hea_X][Sna_Hea_Y] 0)//吃到苹果

{

++Snake_Len;

Eat_Apple = 1;

}

for(ix = 0; ix LEN; ++ix)//处理蛇尾

for(iy = 0; iy WID; ++iy)

{

if(Snake[ix][iy] 0)

{

if(Snake[ix][iy] != Snake_Len)

Snake[ix][iy] += 1;

else

Snake[ix][iy] = 0;

}

}

Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//处理蛇头

}

void Get_Input()//控制蛇的移动方向

{

if(kbhit())

{

switch(getch())

{

case 87:

Sna_Hea_Dir = 'w';

break;

case 83:

Sna_Hea_Dir = 's';

break;

case 65:

Sna_Hea_Dir = 'a';

break;

case 68:

Sna_Hea_Dir = 'd';

break;

default:

break;

}

}

if(clock() - Now_Time = Wait_Time)//蛇到时间自动行走

{

Clear_Snake();

Move_Snake();

Print_Snake();

Now_Time = clock();

}

}

void Init()//初始化

{

system("title 贪吃毛毛蛇");

system("mode con: cols=80 lines=25");

Hide_Cursor();

gotoxy(61, 4);

printf("You Score:");

gotoxy(61, 6);

printf("You Level:");

gotoxy(61, 8);

printf("The Lenght:");

gotoxy(61, 10);

printf("The Speed:");

gotoxy(61, 12);

printf("Apple Num:");

int i;

for(i = 0; i Snake_Len; ++i)//生成蛇

Snake[10+i][15] = i+1;

int iy, ix;//打印蛇

for(iy = 0; iy WID; ++iy)

for(ix = 0; ix LEN; ++ix)

{

if(Snake[ix][iy])

{

SetColor(Snake[ix][iy]);

gotoxy(ix*2, iy);

printf("■");

}

}

}

void Pri_News()//打印信息

{

SetColor(0xe);

gotoxy(73,4);

All_Score += Level;

printf("%3d", All_Score);

gotoxy(73, 6);

printf("%3d", Level);

gotoxy(73, 8);

printf("%3d",Snake_Len);

gotoxy(73, 10);

printf("0.%3ds", Wait_Time/10);

gotoxy(73, 12);

printf("%d", Apple_Num);

}

void Lev_Sys()//等级系统

{

if(((Apple_Num-1) / 10) == Level)

{

++Level;

if(Wait_Time 50)

Wait_Time -= 50;

else

if(Wait_Time 10)

Wait_Time -= 10;

else

Wait_Time -= 1;

}

}

int main(void)

{

Init();

srand((unsigned)time(NULL));//设置随机数的种子

Now_Time = clock();

int speed1=1000,speed2,a;

printf("\n");

printf("请输入你想要的速度\n");

scanf("%d",speed2);

Level=1;

Wait_Time=speed1-speed2;

printf("请输入你想要的苹果数\n");

scanf("%d",a);

while(a--)

Rand_Apple();

while(1)

{

if(Eat_Apple)

{

++Apple_Num;

Rand_Apple();

Lev_Sys();

Pri_News();

}

Get_Input();

Sleep(10);

}

return 0;

}

用C语言编写的小游戏代码是什么?

“猜数字小游戏”,每个数字后按空格,最后按回车确认

#includestdio.h

#includestdlib.h

#includetime.h

int a[4],b[4];

int count=0;  //计算猜测次数

void csh( );  //初始化

void start( );  //开始游戏

int main( )

{ csh( );

start( );

}

void csh( )  //初始化

{ printf("\n\n         猜  数  字  小  游  戏\n\n");

printf(“    猜四个数字,如数字与顺序都正确记为A,数字正确位置不对记为B.\n”);

}

void start( )  //开始游戏

{int m,n;  //m是完全猜对的个数,n是顺序不对的个数

while(1)

{srand((unsigned)time(NULL));  //初始化随机数发生器srand( )

while(1) { for(int i=0;i4;i++) a[i]=rand( )%10;  //rand( )函数每次随机产生一个0-9的数

if( (a[3]!=a[2]a[3]!=a[1]a[3]!=a[0])

(a[2]!=a[1]a[2]!=a[0])a[1]!=a[0] ) break; }  //4个随机数各自不相等

printf("    请依次输入4个一位整数:\n\n   ");

while(1)

{for(int i=0;i4;i++) scanf(“%d”,b[i]);

printf("    你输入的是:%d  %d  %d  %d ",b[0],b[1],b[2],b[3]);

m=0;n=0;

for(int i=0;i4;i++)

{for(int j=0;j4;j++)

{ if(b[i]==a[j]i==j)m=m+1; if(b[i]==a[j]i!=j)n=n+1; }

}

count=count+1;

printf("      %dA  %dB   你试了%d次\n   ",m,n,count);

if(m==4)break;

if(count==8){ count=0; break; }

}

printf("\n");

if(m==4)printf("     你猜对了(^-^)! 就是:%d %d %d %d\n",a[0],a[1],a[2],a[3]);

else printf("     你输了(T-T)!哈哈!应该是:%d %d %d %d\n",a[0],a[1],a[2],a[3]);

int z;

printf("     (要继续吗?1或0)\n   ");

scanf(“%d”,z);

if(z==0) break;

}

}

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

五子棋的代码:

#includeiostream

#includestdio.h

#includestdlib.h

#include time.h

using namespace std;

const int N=15;                 //15*15的棋盘

const char ChessBoardflag = ' ';          //棋盘标志

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

const char flag2='X';              //玩家2的棋子标志

typedef struct Coordinate          //坐标类

int x;                         //代表行

int y;                         //代表列

}Coordinate;

class GoBang                    //五子棋类

{

public:

GoBang()                //初始化

{

InitChessBoard();

}

void Play()               //下棋

{

Coordinate Pos1;      // 玩家1或电脑

Coordinate Pos2;      //玩家2

int n = 0;

while (1)

{

int mode = 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 "y or n :";

char c = 'y';

cin c;

if (c == 'n')

break;

}     

}

protected:

int ChoiceMode()           //选择模式

{

int i = 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)

return i;

cout "输入不合法" endl;

}

}

void InitChessBoard()      //初始化棋盘

{

for (int i = 0; i N + 1; ++i)   

{

for (int j = 0; j N + 1; ++j)

{

_ChessBoard[i][j] = ChessBoardflag;

}

}

}

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

{

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

for (int i = 0; i N+1; ++i)

{

for (int j = 0; j N+1; ++j)

{

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

{

if (j!=0)

printf("%d  ", j);

else

printf("   ");

}

else if (j == 0)                //打印行数字

printf("%2d ", i);

else

{

if (i N+1)

{

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

}

}

}

cout endl;

cout "   ";

for (int m = 0; m N; m++)

{

printf("--|");

}

cout endl;

}

}

void PlayChess(Coordinate pos, int player, int flag)       //玩家下棋

{

PrintChessBoard();         //打印棋盘

while (1)

{

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

cin pos.x pos.y;

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

break;

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

}

_ChessBoard[pos.x][pos.y] = flag;

}

void ComputerChess(Coordinate pos, char flag)       //电脑下棋

{

PrintChessBoard();         //打印棋盘

int x = 0;

int y = 0;

while (1)

{

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

srand((unsigned int) time(NULL));

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

srand((unsigned int) time(NULL));

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

break;

}

pos.x = x;

pos.y = y;

_ChessBoard[pos.x][pos.y] = flag;

}

int JudgeValue(const Coordinate pos)       //判断输入坐标是不是合法

{

if (pos.x 0 pos.x = Npos.y 0 pos.y = N)

{

if (_ChessBoard[pos.x][pos.y] == ChessBoardflag)

{

return 1;    //合法

}

}

return 0;        //非法

}

int JudgeVictory(Coordinate pos, char flag)           //判断有没有人胜负(底层判断)

{

int begin = 0;

int end = 0;

int begin1 = 0;

int end1 = 0;

//判断行是否满足条件

(pos.y - 4) 0 ? begin = (pos.y - 4) : begin = 1;

(pos.y + 4) N ? end = N : end = (pos.y + 4);

for (int i = pos.x, 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)

return 1;

}

//判断列是否满足条件

(pos.x - 4) 0 ? begin = (pos.x - 4) : begin = 1;

(pos.x + 4) N ? end = N : end = (pos.x + 4);

for (int j = pos.y, 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)

return 1;

}

int len = 0;

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

pos.x pos.y ? len = pos.y - 1 : len = pos.x - 1;

if (len 4)

len = 4;

begin = pos.x - len;       //横坐标的起始位置

begin1 = pos.y - len;      //纵坐标的起始位置

pos.x pos.y ? len = (N - pos.x) : len = (N - pos.y);

if (len4)

len = 4;

end = pos.x + len;       //横坐标的结束位置

end1 = pos.y + len;      //纵坐标的结束位置

for (int i = 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)

return 1;

}

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

(pos.x - 1) (N - pos.y) ? len = (N - pos.y) : len = pos.x - 1;

if (len 4)

len = 4;

begin = pos.x - len;       //横坐标的起始位置

begin1 = pos.y + len;      //纵坐标的起始位置

(N - pos.x) (pos.y - 1) ? len = (pos.y - 1) : len = (N - pos.x);

if (len4)

len = 4;

end = pos.x + len;       //横坐标的结束位置

end1 = pos.y - len;      //纵坐标的结束位置

for (int i = 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)

return 1;

}

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

{

for (int j =1; j N + 1; ++j)

{

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

return 0;                      //0表示棋盘没满

}

}

return -1;      //和棋

}

bool GetVictory(Coordinate pos, int player, int flag)   //对JudgeVictory的一层封装,得到具体那个玩家获胜

{

int n = 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");

return true;      //已经有人获胜

}

return false;   //没有人获胜

}

private:

char _ChessBoard[N+1][N+1];   

};

扩展资料:

设计思路

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

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

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

用vc或c++编写的一个小游戏代码,要有源代码,

#includegraphics.h

#includestdlib.h

#includedos.h

#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-Slow\n");

printf("\nPlease Press The numbers..\n");

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(); /*随机数发生器*/

food.yes=1; /*1代表要出现食物,0表示以存在食物*/

snake.life=0;

snake.direction=1;

snake.x[0]=100;snake.y[0]=100;

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

snake.node=2;

PrScore();

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

{

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

{

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

{

food.x=rand()%400+60;

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

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-1;i0;i--) /*贪吃蛇的移动算法*/

{

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

snake.y[i]=snake.y[i-1]; /*贪吃蛇的身体移动算法*/

}

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

{

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

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

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

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

}

for(i=3;isnake.node;i++) /*判断是否头部与身体相撞*/

{

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.xsnake.y[0]==food.y) /*判断蛇是否吃到食物*/

{

setcolor(0);

rectangle(food.x,food.y,food.x+10,food.y-10); /*吃的食物后用黑色将食物擦去*/

snake.x[snake.node]=-20;snake.y[snake.node]=-20; /*现把增加的一节放到看不到的地方去*/

snake.node++;

food.yes=1;

score+=10;

PrScore();

}

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

for(i=0;isnake.node;i++)

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

delay(gamespeed);

DELAY(ch);

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);-windows编程小游戏代码

}

if(snake.life==1)

break;

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

if(key==ESC)

break;

else

if(key==UPsnake.direction!=4)/*判断是否改变方向*/

snake.direction=3;

else

if(key==RIGHTsnake.direction!=2)

snake.direction=1;

else

if(key==LEFTsnake.direction!=1)

snake.direction=2;

else

if(key==DOWNsnake.direction!=3)

snake.direction=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();

}

贪吃蛇