2020.03.06

本文介绍了一个基于C语言的简单棋类游戏程序,该游戏在桌面上放置25颗棋子,两名玩家轮流取走棋子,每次取1至3颗,直至取完所有棋子。最终手中棋子为偶数的玩家获胜。程序通过循环和条件判断实现了游戏流程的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**
//桌子上有25颗棋子,游戏双方轮流取子,每人每次最少取走一
//颗棋子,最多可取走3颗棋子。双方照这样取下去,直到取光所
//有的棋子。于是双方手中必然一方为偶数,一方为奇数,偶数方
//为胜者。请编程实现人机游戏。
**

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void menu() {
 //建立一个游戏开始窗口函数
 printf("****************\n");
 printf("***1.开始游戏***\n");
 printf("***2.退出游戏***\n");
 printf("****************\n");
}
int fun(int choice) {
 //建立一个选择函数,若选择1则开始游戏,若选择2则结束游戏
 if (choice == 1)
  return 1;
 //选择1,返回1,表示正确
 else if (choice == 2)
  return 0;
 //选择2,返回0,表示错误
}
 void game() {
 int m = 25;
 //定义一个整型变量存放剩余棋子数量
 int a, b;
 //定义两个整型变量存放两玩家各自每次取的棋子数量
 int x = 0, y = 0;
 //定义两个整型变量存放两玩家各自的棋子数量
 int i = 1;
 //定义一个整型变量记录局数 
 while (m > 0) {
  //定义一个先决条件,保证每次棋子够取
  printf("======第%d局======\n", i);
  //打印局数
  printf("先手玩家,请选择输入您要取走的个数(最多三个,最少一个):\n");
  scanf("%d", &a);
  //先手玩家输入要取的棋子数
  if (a > m||a>3) {
   printf("先手玩家您取得棋子数过大,请重新输入:\n");
   scanf("%d", &b);
  }
  //判断该数是否符合要求,若不符合提示并重新输入
   m -= a;
   x += a;
   //记录棋盘剩余棋子数和先手玩家手中棋子数
  printf("棋盘还剩余棋子%d个\n", m);
  printf("您的棋子数:%d\n", x);
  //分别打印剩余棋子数和手中棋子数
  printf("后手玩家,请选择输入您要取走的个数(最多三个,最少一个):\n");
  scanf("%d", &b);
  //后手玩家输入要取的棋子数
  if (b > m) {
   printf("后手玩家您取得棋子数过大,请重新输入:\n");
   scanf("%d", &b);
  }
  //判断该数是否符合要求,若不符合提示并重新输入
   m -= b;
   y += b;
   //记录棋盘剩余棋子数和后手玩家手中棋子数
  i++;
  //记录局数
  printf("还剩棋子%d个\n", m);
  printf("您的棋子数:%d个\n", y);
  //分别打印剩余棋子数和手中棋子数
 }
 if (x % 2 == 0)
  printf("先手胜!\n");
 //判断若,先手棋子为偶数则先手胜
 else
  printf("后手胜!\n");
 //反之,后手胜
}
int main() {
 int n;
 //定义一个整型变量用于存放选择
 printf("请输入您的选择:\n");
 menu();
 //调用菜单函数
again:
 //跳转此处
 scanf("%d", &n);
 //输入选择
 if (n != 1 || n != 2) {
  printf("输入错误请重新输入:\n");
  goto again;
  //判断若输入其他值,则实现重新输入选择
 }
 if (fun(n)) {
  //调用判断函数,并判断其返回值
  game();
  //调用游戏函数
 }
 system("pause");
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值