一排石头的游戏(取石头)C语言实现
问题描述:
N块石头排成一行,每块石头有各自固定的位置。
两个玩家依次取石头,每个玩家可以取其中任意一块石头,或者相邻的两块石头,石头在游戏过程中不移位。
最后能将石头一次取光的玩家获胜。
C语言实现:
此处简化,将石头数设置为5,用一个长度为5的数组表示石头,当元素值为1的时候,代表有石头。为0时,代表没有石头。
#include<stdio.h>
//判断当前条件下是否胜利
int ifWin(int array[])
{int sum=0;for(int i=0;i<5;i++)sum+=array[i];if(sum==0)return 1;else return 0;
}
//取石头操作
void getStone(int array[])
{//要取的石头数(1个或2个)int num_get;int position=-1;int position_2=-1;printf("how many stones you want get (1 or 2):");scanf("%d",&num_get);printf("\n");if(num_get==1){printf("the position(1~5):");scanf("%d",&position);printf("\n");if(array[position-1]==1)//将当前位置的数组元素置为0,表示已经取走石头array[position-1]=0;elseprintf("please obey the rules!\n");}else if(num_get==2){printf("the positions(1~5) must touched:");scanf("%d,%d",&position,&position_2);printf("\n");if((array[position-1]==1)&&(array[position_2-1]==1)){array[position-1]=0;array[position_2-1]=0;}else{printf("please obey the rules!\n");}}else{printf("please obey the rules!\n");}
}
//打印当前游戏状况
void gameSituation(int array[])
{for(int i=0;i<5;i++)printf("%d ",array[i]);printf("\n");
}int main()
{int a[5]={1,1,1,1,1};int flag=-1;while(1){flag=ifWin(a);if(flag==1)break;gameSituation(a);getStone(a);}printf("You win!\n");return 0;
}
这个游戏先取者有必胜方法:
先取者只需要取中间的石头即可。
当石头为奇数时,取最中间的那颗石头。
当石头为偶数时,取最中间的两颗石头。
一排石头的游戏(取石头)C语言实现相关推荐
- 算法作业2-轮流取石头游戏
两个足够聪明的人玩轮流取石头的游戏,谁取到最后一个石头谁就赢了,他们一次只能取1个.3个.7个或8个石头,写一程序判断n个石头时先取的人是输还是赢. 输入格式: 一个整数n,其值不超过10000000 ...
- Java黑皮书课后题第5章:**5.34(游戏:石头、剪刀、布)编程练习题3.17给出玩石头-剪刀-布游戏的程序。修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止
5.34(游戏:石头.剪刀.布)编程练习题3.17给出玩石头-剪刀-布游戏的程序.修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止 题目 题目概述 编程练习题3.17 破题 ...
- Java黑皮书课后题第3章:*3.17(游戏:剪刀、石头、布)编写可以玩流行的剪刀-石头-布游戏的程序
*3.17(游戏:剪刀.石头.布)编写可以玩流行的剪刀-石头-布游戏的程序 题目 题目概述 运行示例 ***特别注意*** 破题 代码 题目 题目概述 *3.17(游戏:剪刀.石头.布)编写可以玩流行 ...
- nim2 取石头youxi
a先把石头分堆,然后bababa的顺序取石头,只能取其中一堆中的若干颗(不能不取) 这种问题先考虑 先取者的胜态问题 (1,1)先取者必败, 所以(1,x),当x>1时可以转换为(1,1)使后取 ...
- 使用Java完成石头迷阵游戏
石头迷阵游戏 在一张4X4的地图上,有15个数字方块以及1个空白块. 每局的排序都是随机生成,不重复,如图1所示. 使用键盘的上下左右按键控制空白方块的移动. 记录操作步数. 可以重新开始. 作弊码: ...
- 游戏五子棋(c语言)
游戏五子棋(c语言) 一.项目背景 二.设计目的 三.项目功能需求 1.欢迎界面 2.下棋操作 3.重玩功能 4.悔棋功能 5.胜负判断 四.系统的功能结构图 五.功能模块介绍 1.用户界面模块 2. ...
- c语言 2d游戏设计教程,C语言编写简单2D游戏
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了实现鼠标控制飞机飞行,当鼠标一移动,获取鼠标X的坐标,在消息处理函数中加入下列代码: x = LOWORD(lParam); 如果鼠标的X坐标大于窗口 ...
- 基于游戏开发的C语言大作业视频集锦
基于游戏开发的C语言大作业视频集锦 从2014年至今,尝试了基于游戏开发的C语言程序设计教学,每次课程均会布置大作业,以下视频为一些学生做的大作业视频集锦. 基于游戏开发的C语言大作业视频集锦 后续, ...
- 计算机c语言运算符号取整,c语言取整(c语言四舍五入取整)
C语言有以下几种取整方法:1. 直接赋值给整数变量.如:int i = 2.5: 或 i = (int) 2.5: 这种方法采用的是舍去小数部分2. 使用floor函数.floor(x)返回的是小于或 ...
最新文章
- cad打印样式ctb丢失_我的第一次打印:cad模型空间套图框打印图纸
- 修改Windows的cmd和PowerShell 的字体
- Mozilla发布2015年度报告:搜索合作成营收大头
- javascript权威指南--学习笔记
- rabbitmq 持久化_RabbitMQ原理与相关操作(三)消息持久化
- 石锤!今年Python要过苦日子了? 程序员:我疯了!
- python nonetype报错_python 查询数据库数据 NoneType报错
- php连接mysql开发环境_PHP开发环境搭建及常用的数据库操作
- @Transactional +自定义注解不生效_SpringBoot之路(三)SpringDataJpa中常用注解的使用...
- 异步复位同步释放机制-系统完美稳定
- java开发就业困难吗_就业困难期,他们面临着幸福的烦恼
- ASP.NET MVC 3和Razor中的@helper 语法
- 海康NVR录像机集成大华摄像头
- 5e服务器显示steam名字,5e为什么不显示我csgo的名字(5ecsgo)
- java 编写序列_java如何编写类似oracle自增序列的算法?
- 空时编码的理论与实践(3)空时编码设计准则
- 华硕鹰眼ZenFone Zoom推动潮流:比肩专业相机几率几何?
- 四、Spyder 下使用 Scrapy 开发爬虫之腾讯视频抓取
- 694.27公斤何登骥360搜索热头条 北方旱作国稻种芯功能水稻
- excel数据库_标签打印软件中Excel数据整理及导入