c语言游戏源代码?c++简单小游戏代码
大家好,今天给各位分享c语言游戏源代码的一些知识,其中也会对c++简单小游戏代码进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
给我提供个小游戏的C 语言代码
本原代码是基于C语言的原程序。是经典中的小游戏。-primitive code is based on the C language of the original procedure. Classic is a small game.
一个小游戏,用C语言编写的:俄罗斯方块.C原码及应用程序都在里面哦-a small game using the C language: Russian cubes. The original C code and application procedures inside oh
十全十美游戏原程序,c语言-perfect game program, language c
上数据结构时,自己用C语言做的小游戏,做得不好,请大家原谅。-structure on the data they used C language to the small games, done well, please forgive me.
大家都耍过文曲星中的猜数字的游戏吧!!最近我在学习C语言。写了个菜鸟的C语言的猜数字的游戏程序的原代码-rings off the viewing of the game!! I recently learning C language. Wrote a birdie C language viewing of the games original code procedures
这是我在大学二年级学习C语言课程时,作为“练笔”而编写的一个小程序(当时在我眼里可却是一个大程序!)其主要特点有:1、正真做到了全中文界面(不需要UCDOS操作系支持) 2、大量的图形特技(如图像的显隐技术、图像穿插技术、多任务仿真技术等) 3、纯C语言打造(不含任何C++知识) 4、实现了街机“俄罗斯方块”绝大部分功能(如动画、声音、速度变化) 5、用户可根据自据的习惯自由地调整“游戏操作键” 6、方法独特,全部语句和技术都是我本人原创,没有参考过任何相关代码 7、防“跟踪调试”技术,防“版权篡改”技术 8、……-
这个程序是模仿Windows中的扫雷小游戏制作的,该程序只是实现了扫雷游戏的主体部分,诸如计分、升级部分都没有做。这个程序可以作为初学者学习C语言绘图和游戏的实例。该程序在Turbo C2.0下编译通过由于扫雷游戏是用鼠标操作的,而Turbo C中提供的鼠标驱动程序在Windows xp下不可用,所以我随源程序提供了一个鼠标驱动的头文件,须将将该头文件复制到Turbo C2.0的安装目录下的“include”文件夹中方可编译或运行,也可自行修改原文件使之包含该投文件。注:该鼠标驱动程序是我在网上找到的,其出处我已无法考证,如果侵犯了作者的权利还请作者与我联系。由于在我的电脑上Turbo C图形环境下显示数字会有问题(估计是系统问题),所以程序中雷周围的数字1-8我用a-h代替,看不顺眼的可以自己修改原程序。-
c语言猜拳游戏的原代码就是这个已经测试成功了呀-language of the original game is the code has been tested successfully ah
俄罗斯方块对战版c语言原代码。希望大家能喜欢。是比较简单的一个代码,游戏开发高手请指教。-Tetris screen version of the original C language code. Hope you will like. It is a relatively simple code, game development experts please advise.
用linuX下的C语言运用CURSES编写的俄罗斯方块游戏,很好,这个是本人原创,值得参考-linuX use the C language CURSES prepared by the Russian box game, well, this is the original, worthy of reference
c语言编写的小游戏源代码在什么环境下可以运行
如果代码中没有与平台有关的头文件/函数。且使用的是C的标准库,只要安装了编译器的UNIX/LINUX/WINDOWS任何环境都可以运行,只需要用该平台提供的编译器对源代码进行编译、链接成可执行文件就可以运行。
如果使用了与平台有关的头文件/非C标准库,否则只能在作者要求的环境下进行编译、链接和运行。
用C++编写的小游戏源代码
五子棋的代码:
#include<iostream>
#include<stdio.h>
#include<stdlib.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<= N&&pos.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(len>4)
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(len>4)
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("***电脑获胜***
");
else
printf("***恭喜玩家%d获胜***
", player);
}
else
printf("***双方和棋***
");
return true;//已经有人获胜
}
return false;//没有人获胜
}
private:
char _ChessBoard[N+1][N+1];
};
扩展资料:设计思路
1、进行问题分析与设计,计划实现的功能为,开局选择人机或双人对战,确定之后比赛开始。
2、比赛结束后初始化棋盘,询问是否继续比赛或退出,后续可加入复盘、悔棋等功能。
3、整个过程中,涉及到了棋子和棋盘两种对象,同时要加上人机对弈时的AI对象,即涉及到三个对象。
OK,本文到此结束,希望对大家有所帮助。