c语言猜拳游戏实验报告,《猜拳小游戏》--一个c语言写的小项目
很久以前写的一个小项目,有兴趣的可以进来看看。
这个小项目主要包含以下信息和功能:
1、玩家信息--->(结构体)包含名字,密码,赢的场数, 总的场数,胜利比率
2、创建玩家
3、销毁玩家
4、创建游戏菜单
5、电脑载入(出拳时动态显示)
6、显示出拳的信息
7、电脑出拳的核心函数(随机函数)
8、退出时显示排行榜
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
//宏定义
//#define 宏名 宏定义;
#define NAME_SIZE 20
#define PASSWD_SIZE 20
#define NAME "zhangsan"
#define PASSWD "123456"
#define TRUE 1
#define MFLUSH {int ch = 0; \
while ((ch = getchar()) != '\n' \
&& ch != EOF); }
//{
//char ch = 0;
//ch = getchar();
//while ( '\n' != ch && ch != EOF)
//{
//ch = getchar();
//}
//}
#define CONTINUE(X) {printf("%s", X); getchar();}
//{
//char str = "按回车键继续";
//printf("%s", "按回车键继续"/*tr*/);
//getchar();
//}
#define CONTINUE(X) {printf("%s", X); getchar();}
//玩家结构体
typedef struct player
{
char name[NAME_SIZE];
char passwd[PASSWD_SIZE];
int total;
int victory;
} player_t;
player_t* player;
/************************************************************************/
/*函数功能:创建玩家
/* 函数参数:无
/* 返 回 值:成功-返回堆内存首地址
/* 失败-返回NULL
/************************************************************************/
player_t * ceart_player(void)
{
player = (player_t *)malloc(sizeof(player_t)* 1);
if (NULL == player)
{
return NULL;
}
memset(player, 0, sizeof(player_t));
strcpy(player->name, NAME);
strcpy(player->passwd, PASSWD);
player->total = 0;
player->victory = 0;
return player;
}
/************************************************************************/
/*函数功能:销毁玩家
/* 函数参数:无
/* 返 回 值:无
/************************************************************************/
void destory_player()
{
if (NULL != player)
{
free(player);
player = NULL;
}
}
/************************************************************************/
/*函数功能:创建菜单
/* 函数参数:无
/* 返 回 值:无
/************************************************************************/
void meue()
{
system("cls");
printf("欢迎来到猜拳游戏\n");
printf("==================\n\n");
printf("1. 石头 2. 剪刀 3. 布 0. 退出\n");
printf("请您出拳:");
}
int myrand()
{
int chose = 0;
srand(time(NULL));
chose = rand() % 3 + 1; //[0 maxnum][1-3]
return chose;
}
/************************************************************************/
/*函数功能:打印详细信息
/* 函数参数:choseOfPlayer 玩家出拳
/* choseOfComputer电脑出拳
/* 返 回 值:无
/************************************************************************/
void out_win(int choseOfplayer, int choseOfComputer)
{
if(1 == choseOfplayer)
{
printf("您出了石头\n");
}
else if (2 == choseOfplayer)
{
printf("您出了剪刀\n");
}
else if(3 == choseOfplayer)
{
printf("您出了布\n");
}
if(1 == choseOfComputer)
{
printf("电脑出了石头\n");
}
else if (2 == choseOfComputer)
{
printf("电脑出了剪刀\n");
}
else if(3 == choseOfComputer)
{
printf("电脑出了布\n");
}
}
/************************************************************************/
/*函数功能:电脑载入
/* 函数参数:无
/* 返 回 值:无
/************************************************************************/
void load(void)
{
int i = 0;
for (i = 2; i >= 0; --i)
{
system("cls");
printf("电脑出拳中:%d", i);
fflush(stdout);
Sleep(1000);
}
printf("\n");
}
/************************************************************************/
/*函数功能:控制菜单菜单
/* 函数参数:无
/* 返 回 值:无
/************************************************************************/
void meue_ctr()
{
int player_chose = 0;
int compuer_chose = 0;
int win = 0;
while (TRUE)
{
do
{
meue();
scanf("%d", &player_chose);
MFLUSH;
} while (player_chose > 3 || player_chose < 0);
if (0 == player_chose)
{
return;
}
load();
compuer_chose = myrand();
printf("==================出拳详情==================\n");
out_win(player_chose, compuer_chose);
win = player_chose - compuer_chose;
//总局数
player->total++;
switch (win)
{
case -1:
case 2:
{
printf("\n\n恭喜您,赢了\n");
player->victory++;
CONTINUE("按回车继续");
break;
}
case 0:
{
printf("\n\n和了\n");
CONTINUE("按回车继续");
break;
}
default:
{
printf("\n\n很遗憾您,输了\n");
CONTINUE("按回车继续");
break;
}
}
}
}
/************************************************************************/
/*函数功能:排行榜
/* 函数参数:无
/* 返 回 值:无
/************************************************************************/
void victory_display()
{
double win = 0.0;
printf("\n\n\t\t 排行榜\n");
printf("\t\t==========\n\n");
printf("%10s %10s %10s %10s\n", "姓名", "总局数", "胜利数", "胜率\n");
printf("=============================================\n\n");
if (0 != player->total)
{
win = (double)player->victory / player->total * 100;
}
printf("%10s %10d %10d %5.2lf%% \n", player->name, player->total, player->victory, win);
}
int main(void)
{
player = ceart_player();
if (NULL == player)
{
return 1;
}
meue_ctr();
victory_display();
destory_player();
}
运行结果截图:
c语言猜拳游戏实验报告,《猜拳小游戏》--一个c语言写的小项目相关推荐
- python俄罗斯方块小游戏实验报告,童年的记忆——如何用python写一个俄罗斯方块小游戏!...
谈到记忆里的小游戏,俄罗斯方块是大家一定会想到的一款游戏,自己写出来的应该玩起来更有感觉,然后就写了一个俄罗斯方块的游戏 给大家分享一下这个游戏的源码 先用python创建一个py文件 定义这次程序所 ...
- python弹球游戏实验报告_Python实战案例:用Python写一个弹球游戏,就是这么强
我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python ...
- c语言猜单词游戏实验报告,猜单词游戏c语言源程序.doc
猜单词游戏c语言源程序 包括程序及txt文档,希望可以对您有所帮助 #include #include #include #include #include #include #include voi ...
- c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
<C语言程序设计>实验报告(实验1-12).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会 ...
- 拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc
C语言拼图游戏实验报告 课程设计实验报告 班级:光电104-2 姓名:刘云龙 学号:201058501220 一.实验题目:使用C语言编写一个小游戏(拼图游戏) 二.实验目的:C语言是每一个通信学生的 ...
- C语言中猜数大小的实验报告,猜数字游戏实验报告
<猜数字游戏实验报告>由会员分享,可在线阅读,更多相关<猜数字游戏实验报告(17页珍藏版)>请在人人文库网上搜索. 1.C语言课程设计报告题 目:猜数字游戏班 级:通信工程组 ...
- c语言程序设计扫雷游戏实验报告,C语言程序设计扫雷游戏实验报告.doc
C语言程序设计扫雷游戏实验报告 中南大学 程序设计基础实践报告 题 目 设计一个和window系统类似的小游戏[挖地雷] 学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 ...
- c语言扫雷程序设计流程图,c语言程序设计扫雷游戏实验报告
c语言程序设计扫雷游戏实验报告 中南大学 程序设计基础实践报告 题 目 设计一个和window系统类似的小游戏[挖地雷]学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 完 ...
- java小游戏实训目的_Java弹球小游戏实验报告.doc
Java弹球小游戏实验报告 滨江学院 Java程序设计实验报告 题 目 弹球小游戏 姓 名 许浩 学 号 20112346064 学 院 滨江学院 专 业 网络工程 年 级 2011级 指导教师 张舒 ...
- 扫雷c语言课程设计报告,扫雷游戏实验报告.docx
扫雷游戏实验报告剖析 课程设计软件综合课程设计班 级:姓 名:学 号:指导教师:成 绩:电子与信息工程学院信息与通信工程系目录1.任务概述------------------------------- ...
最新文章
- 《数据库技术原理与应用教程》一3-5信息世界与逻辑模型
- LNMP环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)
- MyBatis-学习笔记04【04.自定义Mybatis框架基于注解开发】
- java开发简介_Java Web开发介绍
- 帮助你生成响应式布局的CSS模板 - xyCSS
- javascript-封闭函数的定义与使用
- libuv udp server和client
- 不是技术牛人,如何拿到国内IT巨头的Offer(转载)
- SYS_数据访问权限Operation Unit和Ledger的访问设定(案例)
- win7企业版激活秘钥激活kms安装激活教程
- php自定义生成用户收据,Shopify POS收据自定义操作步骤
- 微信群聊在哪个服务器,微信怎么找附近的群聊?微信群不见了怎么找?
- 开启电脑卓越性能模式
- 使用ps 批处理图片(gif 转 png)
- C语言---简单五子棋小游戏
- 少儿编程---小猫追气球
- linux下启动,关闭oracle数据库
- IOS 调用第三方地图APP导航
- 看完 穿条纹睡衣的男孩 之后
- OpenLayer学习之加载天地图在线地图