很久以前写的一个小项目,有兴趣的可以进来看看。

这个小项目主要包含以下信息和功能:

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语言写的小项目相关推荐

  1. python俄罗斯方块小游戏实验报告,童年的记忆——如何用python写一个俄罗斯方块小游戏!...

    谈到记忆里的小游戏,俄罗斯方块是大家一定会想到的一款游戏,自己写出来的应该玩起来更有感觉,然后就写了一个俄罗斯方块的游戏 给大家分享一下这个游戏的源码 先用python创建一个py文件 定义这次程序所 ...

  2. python弹球游戏实验报告_Python实战案例:用Python写一个弹球游戏,就是这么强

    我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python ...

  3. c语言猜单词游戏实验报告,猜单词游戏c语言源程序.doc

    猜单词游戏c语言源程序 包括程序及txt文档,希望可以对您有所帮助 #include #include #include #include #include #include #include voi ...

  4. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc

    <C语言程序设计>实验报告(实验1-12).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会 ...

  5. 拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc

    C语言拼图游戏实验报告 课程设计实验报告 班级:光电104-2 姓名:刘云龙 学号:201058501220 一.实验题目:使用C语言编写一个小游戏(拼图游戏) 二.实验目的:C语言是每一个通信学生的 ...

  6. C语言中猜数大小的实验报告,猜数字游戏实验报告

    <猜数字游戏实验报告>由会员分享,可在线阅读,更多相关<猜数字游戏实验报告(17页珍藏版)>请在人人文库网上搜索. 1.C语言课程设计报告题 目:猜数字游戏班 级:通信工程组 ...

  7. c语言程序设计扫雷游戏实验报告,C语言程序设计扫雷游戏实验报告.doc

    C语言程序设计扫雷游戏实验报告 中南大学 程序设计基础实践报告 题 目 设计一个和window系统类似的小游戏[挖地雷] 学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 ...

  8. c语言扫雷程序设计流程图,c语言程序设计扫雷游戏实验报告

    c语言程序设计扫雷游戏实验报告 中南大学 程序设计基础实践报告 题 目 设计一个和window系统类似的小游戏[挖地雷]学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 完 ...

  9. java小游戏实训目的_Java弹球小游戏实验报告.doc

    Java弹球小游戏实验报告 滨江学院 Java程序设计实验报告 题 目 弹球小游戏 姓 名 许浩 学 号 20112346064 学 院 滨江学院 专 业 网络工程 年 级 2011级 指导教师 张舒 ...

  10. 扫雷c语言课程设计报告,扫雷游戏实验报告.docx

    扫雷游戏实验报告剖析 课程设计软件综合课程设计班 级:姓 名:学 号:指导教师:成 绩:电子与信息工程学院信息与通信工程系目录1.任务概述------------------------------- ...

最新文章

  1. 《数据库技术原理与应用教程》一3-5信息世界与逻辑模型
  2. LNMP环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)
  3. MyBatis-学习笔记04【04.自定义Mybatis框架基于注解开发】
  4. java开发简介_Java Web开发介绍
  5. 帮助你生成响应式布局的CSS模板 - xyCSS
  6. javascript-封闭函数的定义与使用
  7. libuv udp server和client
  8. 不是技术牛人,如何拿到国内IT巨头的Offer(转载)
  9. SYS_数据访问权限Operation Unit和Ledger的访问设定(案例)
  10. win7企业版激活秘钥激活kms安装激活教程
  11. php自定义生成用户收据,Shopify POS收据自定义操作步骤
  12. 微信群聊在哪个服务器,微信怎么找附近的群聊?微信群不见了怎么找?
  13. 开启电脑卓越性能模式
  14. 使用ps 批处理图片(gif 转 png)
  15. C语言---简单五子棋小游戏
  16. 少儿编程---小猫追气球
  17. linux下启动,关闭oracle数据库
  18. IOS 调用第三方地图APP导航
  19. 看完 穿条纹睡衣的男孩 之后
  20. OpenLayer学习之加载天地图在线地图

热门文章

  1. 剑指 Offer II 070. 排序数组中只出现一次的数字
  2. 请给 SpringBoot 多一些内存
  3. Oracle数据库的增删改操作介绍
  4. 思维导图Vue组件 mindmap
  5. DataGrip使用入门
  6. ios - 高效,准确的网络检测
  7. 迅雷精简版-纪念走过的时光
  8. 【BZOJ】1015 [JSOI2008]星球大战starwar(并查集+离线处理)
  9. idea 和 maven学习
  10. 机器学习真的可以起作用吗?(1)