急求C语言编译的小游戏.EXE(如扫雷),附带源代码和注释.TXT。TXT文件最好不超过10KB。
采纳最佳答案后追加200分,多谢了!
小游戏2048:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
int jsk( ); //计算空格数
void rsgm( ); //重置游戏
void inkey( ); //按键输入
void left( ); //向左移动
void right( ); //向右移动
void up( ); //向上移动
void down( ); //向下移动
void show( ); //输出界面
void adnum( ); //添加随机数
void yes( ); //游戏是否结束(1是0否)
void gtxy(int x, int y); //控制光标位置的函数
int a[4][4]; //存储16个格子中的数字
int score = 0; //每局得分
int best = 0; //最高得分
int ifnum; //是否需要添加数字(1是0否)
int over; //游戏结束标志(1是0否)
int i,j,k;
int main( )
{ rsgm( ); //重置游戏
inkey( ); //按键输入
return 0;
}
void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)
{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);
} //用于控制字符颜色的函数
void rsgm( ) //重置游戏
{ score = 0; ifnum = 1; over = 0; srand((unsigned)time(0)); //启动随机数发生器
int n = rand( ) % 16; //随机函数产生0-15的数字
for (i = 0; i < 4; i++)
{for (j = 0; j < 4; j++)
{ if (n == 0) { int k = rand( ) % 3; if (k == 0 || k == 1) { a[i][j] = 2; }
else { a[i][j] = 4; } n--; }
else { a[i][j] = 0; n--; }
}
}
adnum( );
system("cls");
CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
setColor(14, 0); //设置字体淡黄色,背景为黑色
printf("\n\n\t\t 2048小游戏"); setColor(7, 0); //恢复白字黑底
printf("\n\t┌──────┬──────┬──────┬──────┐");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t└──────┴──────┴──────┴──────┘");
show( );
}
void show( ) //输出界面
{ for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ gtxy(7*j+9,2*i+4); //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字
if(a[i][j]==0){printf(" "); setColor(7, 0); printf("│");}
else if(a[i][j]<10){ if (a[i][j] == 2) {setColor(14, 0); }
else if (a[i][j] == 4) {setColor(13, 0); }
else if (a[i][j] == 8) {setColor(12, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
else if (a[i][j] < 100){if (a[i][j] == 16) {setColor(12, 0); }
else if (a[i][j] == 32) {setColor(10, 0); }
else if (a[i][j] == 64) {setColor(2, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
else if (a[i][j] < 1000) {if (a[i][j] == 128) {setColor(9, 0); }
else if (a[i][j] == 256) {setColor(1, 0); }
else if (a[i][j] == 512) {setColor(13, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
else if (a[i][j] < 10000) {if (a[i][j] == 1024) {setColor(5, 0); }
else {setColor(15, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
}
if (jsk( ) == 0)
{ yes( ); if (over) { gtxy(9,12); setColor(10, 0);
printf("\n\n 游戏结束!是否继续? [ Y/N ]:"); }
}
}
void inkey( ) //按键输入
{ int key;
while (1)
{ key = getch( );
if (over) { if (key == 89|| key == 121) {rsgm( ); continue; }
else if (key == 78|| key == 110) { return; }
else continue; }
ifnum = 0;
if(key==224)key=getch( );
switch (key)
{ case 75: left( ); break;
case 77: right( ); break;
case 72: up( ); break;
case 80: down( );break;
}
if (score > best) { best = score; }
if (ifnum) { adnum( ); show( ); }
}
}
int jsk( ) //计算空格数
{ int n = 0;
for (i = 0; i < 4; i++)
{ for (j = 0; j < 4; j++) { if ( a[i][j] == 0) {n++;} } }
return n;
}
void left( ) //向左移动
{ for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{ if (a[i][j] > 0)
{ if ( a[i][k] == a[i][j])
{ a[i][k] *= 2; k++;
score = score + 2 * a[i][j];
a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) { a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k + 1] = a[i][j]; if ((k + 1) != j) { a[i][j] = 0; ifnum = 1; }
k++; }
}
}
}
}
void right( ) //向右移动
{for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[i][j] > 0)
{ if (a[i][k] == a[i][j])
{a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) {a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k - 1] = a[i][j]; if ((k - 1) != j) { a[i][j] = 0; ifnum = 1; } k--; }
}
}
}
}
void up( ) //向上移动
{for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{if (a[j][i] > 0)
{if ( a[k][i] == a[j][i]) { a[k][i] *= 2; k++;score = score + 2 * a[j][i];
a[j][i] = 0; ifnum = 1; }
else if ( a[k][i] == 0) { a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else { a[k + 1][i] = a[j][i]; if ((k + 1) != j) { a[j][i] = 0; ifnum = 1; }
k++; }
}
}
}
}
void down( ) //向下移动
{ for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[j][i] > 0)
{if (a[k][i] == a[j][i])
{a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1; }
else if (a[k][i] == 0) {a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else {a[k - 1][i] = a[j][i];
if ((k - 1) != j) {a[j][i] = 0; ifnum = 1; } k--; }
}
}
}
}
void adnum( ) //添加随机数
{ srand(time(0)); int n = rand( ) % jsk( );
for (int i = 0; i < 4; i++)
{for (int j = 0; j < 4; j++)
{ if (a[i][j] == 0) {if (n != 0) { n--; }
else {int k = rand() % 3;
if (k == 0 || k == 1) {a[i][j] = 2; return; }
else {a[i][j] = 4; return; } }
}
}
}
}
void yes( ) //游戏是否结束
{ for (int i = 0; i < 4; i++)
{for (int j = 0; j < 3; j++)
{if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0; return; }}
}
over = 1;
}
void gtxy(int x, int y) //控制光标位置的函数
{ COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
急求C语言编译的小游戏(如扫雷),附带源代码和注释。
void Control(void);\/*游戏开始,重新,关闭*\/void GameBegain(void);\/*游戏开始画面*\/void DrawSmile(void);\/*画笑脸*\/void DrawRedflag(int,int);\/*显示红旗*\/void DrawEmpty(int,int,int,int);\/*两种空格子的显示*\/void GameOver(void);\/*游戏结束*\/void GameWin(void);\/*显示胜利*\/int MineStatist...
C语言扫雷游戏源代码
"扫雷"小游戏C代码 include<stdio.h>#include<math.h>#include#include<stdlib.h>main( ){char a[102][102],b[102][102],c[102][102],w;int i,j; \/*循环变量*\/int x,y,z[999]; \/*雷的位置*\/int t,s; \/*标记*\/int m,n,lei; \/*计数*\/int u,v; \/*输入*\/int ...
急求用c语言编写扫雷详细代码
void DrawEmpty(int,int,int,int);\/*两种空格子的显示*\/void GameOver(void);\/*游戏结束*\/void GameWin(void);\/*显示胜利*\/int MineStatistics(int,int);\/*统计每个格子周围的雷数*\/int ShowWhite(int,int);\/*显示无雷区的空白部分*\/void GamePlay(void);\/*游戏过程*\/void Close(void);\/*图形关闭*\/...
能在dev-c++上运行通过的扫雷,贪吃蛇,等小游戏的c语言代码
void Initialize(void); \/* 图形驱动 *\/ void CloseGame(void); \/* 关闭游戏函数 *\/ void DrawGame(void); \/* 画图函数 *\/ void GameOver(void); \/* 输出失败函数 *\/ void PlayGame(); \/* 游戏控制函数 主要控制序列 *\/ void Delay(char ch); \/* 调节游戏速度 *\/ \/* 主函数 *\/ ...
能在dev-c++上运行通过的扫雷,贪吃蛇,等小游戏的c语言代码
void Close(void); \/*关闭游戏函数*\/ void DrawK(void); \/*画图函数*\/ void GameOver(void);\/*输出失败函数*\/ void GamePlay(); \/*游戏控制函数 主要程序*\/ void PrScore(void); \/*分数输出函数*\/ DELAY(char ch)\/*调节游戏速度*\/ { if(ch=='3'){ delay(gamespeed); \/*delay是延迟...
求一个用C语言编写的小游戏代码
\/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo………)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*\/\/*贪吃蛇*\/#include<stdio.h>#include#include<conio.h>#include<stdlib.h>int head=3 ,tail=0;in...
急,朋友急需用C语言在VC6.0++上面编译的扫雷源码,要拿过来就能用,不需...
2013-10-09 紧急:用VC6.0编译新编写的C语言程序的时候都出现fata... 2012-01-01 求VC++6.0 上能运行的贪吃蛇、俄罗斯方块、扫雷的C语言... 11 2009-02-16 急求C语言编译的小游戏(如扫雷),附带源代码和注释。 191 2011-10-12 急求VC6.0下用C语言编写的俄罗斯方块的源代码,急!!! 2 2017-04-06 ...
请用PYTHON编一个小游戏,如五子棋,连连看,贪吃蛇,扫雷,计算器等等
self.top = self.winfo_toplevel() self.top.resizable(False, False) self.grid() self.canvas = Canvas(self) self.canvas.grid() self.canvas.config(width=self.size,
跪求:用C++编个小游戏(如俄罗斯方块.人品计算器.扫雷...等等)需要学哪...
《C++ primer》 + 《Windows 程序设计》 就可以了,这些小游戏都很简单。这两本书都可以在网上下载到电子版。你只需要知道C语言的一些语法和 Windows的一些API就可以做出来,不需要通读这两本书再开始做。
c语言游戏代码大全(收录100多款经典游戏源码)
操作步骤 Step1:下载源码 访问Github上的C语言游戏代码大全仓库,找到需要的游戏源码,点击“Download”按钮下载源码压缩包。Step2:解压源码 使用解压软件将下载的源码压缩包解压到本地硬盘上。Step3:编译源码 使用C语言编译器(如GCC)编译源码,生成可执行文件。Step4:运行游戏 运行生成的可执行文件,开始...