这是本人依据现学知识写的简易三子棋,也不是那么简洁明了,望大佬指点

 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define ROW 3
#define COL 3
char chess_board[ROW][COL];
int PlayGame(int choice){
printf("************************\n");
printf("* 欢迎来到三子棋游戏 *\n");
printf("* 请您选择 *\n");
printf("* 1.开始游戏 *\n");
printf("* 2.离开游戏 *\n");
printf("************************\n");
while (){
scanf("%d", &choice);
if (choice == )
{
return ;
break;
}
else if (choice == )
{
return ;
break;
}
else
{
printf("输入非法,请重新输入!");
continue;
}
}
}
int Init(char a[ROW][COL]){
for (int row = ; row <ROW; row++){
for (int col = ; col < COL; col++)
{
a[row][col] = ' ';
}
}
return ;
}
void Print(char a[ROW][COL]){
printf(" \n");
for (int i = ; i < ROW; i++){
printf(" %c | %c | %c \n", a[i][], a[i][], a[i][]);
if (i != ){
printf("----|----|----\n");
}
}
}
void PlayerMove(char a[ROW][COL]){
int row = -;
int col = -;
while (){
printf("请您选择落子点坐标:");
scanf("%d %d", &row, &col);
if (row< || row> || col< || col>){
printf("输入非法,请重新输入!");
continue;
}
else if (a[row][col] == 'x' || a[row][col] == 'o')
{
printf("已有棋子,请重新选择坐标!");
continue;
}
else
{
a[row][col] = 'o';
break;
} }
}
int IsFull(char a[ROW][COL]){
int sum = ;
for (int row = ; row < ROW; row++)
{
for (int col = ; col < COL; col++)
{
if (a[row][col] != ' ')
{ sum++;
}
}
}
if (sum == ){
return ;
}
}
char Checkwinner(char a[ROW][COL]){
//1.判断三子 横 竖 斜
for (int row = ; row < ROW; row++){
if (a[row][] == a[row][] && a[row][] == a[row][] && a[row][] != ' ')
{
return 'p';
}
}
for (int col = ; col < COL; col++){
if (a[][col] == a[][col] && a[][col] == a[][col] && a[][col] != ' ')
{
return 'p';
}
}
if (a[][] == a[][] && a[][] == a[][] && a[][] != ' ')
{
return 'p';
}
if (a[][] == a[][] && a[][] == a[][] && a[][] != ' '){
return 'p';
}
} void ComputeMove(char a[ROW][COL]){
printf("请电脑落子!\n");
while (){
int col = rand() % ;
int row = rand() % ;
if (a[row][col] == ' ')
{
a[row][col] = 'x';
break;
}
else continue;
}
}
void Game(){
Init(chess_board);//2.棋盘初始化
Print(chess_board);//3.打印棋盘
while (){ PlayerMove(chess_board);//4.用户落子
Print(chess_board);
if (Checkwinner(chess_board) == 'p')
{
printf("玩家获胜!\n");
break;
}
if (IsFull(chess_board) == )//2.判断是否和棋
{
printf("平局!");
break;
}
ComputeMove(chess_board);//6.电脑随机落子
Print(chess_board);//3.打印棋盘
if (Checkwinner(chess_board) == 'p')
{
printf("电脑获胜!\n");
break;
} if (IsFull(chess_board) == )//2.判断是否和棋
{
printf("平局!\n");
break;
}
}
} int main(){
int choice = ;
if (PlayGame(choice) == ) { //1.选择是否开始游戏 a)开始 b)离开
Game(); }
system("pause");
}

C语言简易三子棋的更多相关文章

  1. 用c语言实现三子棋

    1 game.c://实现三子棋的.c文件 #define _CRT_SECURE_NO_WARNINGS #include"game.h" void init_board(cha ...

  2. C语言数组实现三子棋

    C语言实现三子棋(通过数组) 需要包含的头文件 #include <stdio.h> #include <stdlib.h> #include <time.h> 创 ...

  3. c语言实现:三子棋

    问题描述:两个游戏者在3*3棋盘里轮流作标记,如果一个人在行,列或者两个对角线可以作三个标记,则为获胜. 我们首先得打印菜单供玩家选择(可以选择玩游戏或者退出游戏) void menu() { pri ...

  4. c语言小游戏-三子棋的完成

    三子棋的实现 一.实现思路 1.初始化数组 三子棋是九宫格的格式,所以用二维数组接收数据.用‘O’代表电脑下的子,‘X’代表玩家下的子.未下子的时候初始化 ’ ‘(space).则二维数组为“char ...

  5. 51Nod:1995 三子棋

    1995 三子棋  题目来源: syu校赛 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 小的时候大家一定玩过"井"字棋吧.也就是在 ...

  6. C语言之三字棋的简单实现及扩展

    C语言之三字棋的简单实现及扩展 在我们学习完数组之后,我们完全可以利用数组相关知识来写一个微小型的游戏,比如说今天所说的--三子棋. 大纲: 文件组成 实现   完整代码展示   扩展 即: 一.文件 ...

  7. Dart 语言简易教程系列

    google Fuchsia系统 及 dart语言简介 在 InteIIiJ IDEA 中搭建 Dart 的开发环境 Dart Linux 开发环境搭建 Dart 语言简易教程(一) Dart 语言简 ...

  8. 51nod 1995 三子棋

    小的时候大家一定玩过“井”字棋吧.也就是在九宫格中,只要任意行.列,或者任意连续对角线上面出现三个相同的,就能获胜.现在小明和小花也在玩三子棋,但是他们不是在九宫格里,而是在3×4的格子里面.现在小明 ...

  9. P1838 三子棋I

    题目描述 小a和uim喜欢互相切磋三子棋.三子棋大家都玩过是吗?就是在九宫格里面OOXX(别想歪了),谁连成3个就赢了. 由于小a比较愚蠢,uim总是让他先. 我们用9个数字表示棋盘位置: 123 4 ...

随机推荐

  1. Ionic控件之——按钮(Button)

    Ionic提供丰富的按钮特性,足以满足大部分的按钮实现需求. 一.HTML实现一个简单按钮: <button class="button"> 我是按钮 </but ...

  2. php读取大文件如日志文件

    需求如下: 现有一个1G左右的日志文件,大约有500多万行, 用php返回最后几行的内容. 1. 直接采用file函数来操作 or file_get_content() 肯定报内存溢出注: 由于 fi ...

  3. August 01st 2017 Week 31st Tuesday

    A contented mind is the greatest blessing a man can enjoy in this world. 知足是人生在世最大的幸事. Being content ...

  4. [EffectiveC++]item20:Prefer pass-by-reference-to-const to pass-by-value

  5. Java 集合框架(常用数据结构)

    早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...

  6. scala当中的类型参数

    类型参数主要就是研究scala当中的类或者scala当中的方法的泛型 1.scala当中的类的泛型         object Demo8 {          def main(args: Arr ...

  7. ios 性能优化概述

    在开发IOS程序的时候,不止是简简单单的把代码堆砌起来,或者说有一个比较好的架构,程序就ok的.还需要在程序性能上进行优化.所谓优化,并非只是简单的优化几个算法,让程序看起来跑的更快.优化是有目标的, ...

  8. 关于数据库SQL优化

    1.数据库访问优化   要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...

  9. python,dict的setdefault方法

    @dict的setdefault方法 先看看文档中的解释 setdefault(...)    D.setdefault(k[,d]) -> D.get(k,d), also set D[k]= ...

  10. ALICE源代码分析

    前言 ALICE(爱丽丝)事实上是"人工语言计算机实体"的英文缩写. 它以前在往年(2000年.2001年和2004年)的勒布纳人工智能奖角逐中三次获胜.并在其它年度中也获过骄人的 ...