C井字棋

2024-01-17 05:38
文章标签 井字棋

本文主要是介绍C井字棋,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <stdio.h>
#include <stdbool.h>int main()
{char qipan[3][3] = {{' ',' ',' '},{' ',' ',' '},{' ',' ',' '}};int step = 0;int player = 0;int pos = 0;bool win = false;int i , j;//绘制棋盘 printf("|-------------|\n");printf("| %c || %c || %c |\n", qipan[0][0],qipan[0][1],qipan[0][2]); printf("|-------------|\n");printf("| %c || %c || %c |\n", qipan[1][0],qipan[1][1],qipan[1][2]);printf("|-------------|\n"); printf("| %c || %c || %c |\n", qipan[2][0],qipan[2][1],qipan[2][2]);printf("|-------------|");while(step<9){printf("\n请选手%d落子:",step%2+1);scanf("%d",&pos);pos = pos - 1;//判断落子是否合理if(qipan[pos/3][pos%3]==' '){qipan[pos/3][pos%3] =  step%2 ? 'O' : 'X';printf("|-------------|\n");printf("| %c || %c || %c |\n", qipan[0][0],qipan[0][1],qipan[0][2]); printf("|-------------|\n");printf("| %c || %c || %c |\n", qipan[1][0],qipan[1][1],qipan[1][2]);printf("|-------------|\n"); printf("| %c || %c || %c |\n", qipan[2][0],qipan[2][1],qipan[2][2]);printf("|-------------|");       }else{printf("落子位置错误!");continue;    }//判断是否胜利for(i=0;i<3;i++){if(qipan[i][0]==qipan[i][1]&&qipan[i][1]==qipan[i][2]&&qipan[i][0]!= ' ')win = true;if(qipan[0][i]==qipan[1][i]&&qipan[1][i]==qipan[2][i]&&qipan[0][i]!= ' ')win = true;}if(qipan[0][0]==qipan[1][1]&&qipan[1][1]==qipan[2][2]&&qipan[0][0]!= ' ')win = true;if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0]&&qipan[0][2]!= ' ')win = true;if (win){printf("\n选手%d胜利\n",step%2+1);system("pause");return 0;}elsestep++;}printf("\n平局\n");system("pause");return 0;   
}

这篇关于C井字棋的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615008

相关文章

python制作井字棋程序

井字棋的九个格子可以用二进制表示,整个运算过程用位运算。 三个相同标记连续在一条直线,事先准备好样本,如果样本与使用and运算相同,就判断三个标记是一起的。 代码如下 import random goal=[     0b111000000,0b000111000,0b000000111,0b100100100,     0b010010010,0b001001001,0b10001000

C语言井字棋

#include<windows.h>#include<stdio.h>#include<string.h>#include<stdlib.h>//主要逻辑 用户数据 -》棋盘//存储用户数据 正好对应3*3的一个棋盘的九个数据点//每个里面一个x,y对应棋盘中的一个填棋子的位置struct point{int x,y;char val;};char map[14][14];s

牛客网:井字棋

链接:https://www.nowcoder.com/questionTerminal/e1bb714eb9924188a0d5a6df2216a3d1?mutiTagIds=578_584_585_640&orderByHotValue=1&commentTags=C/C++ 题目描述 对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。 给定一个二维数组board,代表当前

c语言井字棋人人,人机版and超详细代码

注意 注意 注意 “文章末尾有完整代码” 刚学完c语言,就想试试写个简单的井字棋,看了好多博主的,能看到的写的都不咋样,要vip的咱也看不到。综合许多博主的。也写出了一个不咋样的代码。不过代码很详细的很适合c新手观看。 头文件,定义全局变量 #include <stdlib.h>#include <windows.h>#include <time.h>int QP[3][3];//为2是

基于极大极小算法和alpha-beta剪枝实现AI井字棋

关于极大极小算法和alpha-beta剪枝可以参考文章的参考资料,这里仅对其进行代码实现。 其实这个算法单纯的理解并不容易,下面用代码进行实现。 说一下实现这个AI井字棋的思路: 简单的来说就是计算机希望估值函数值最大,而下棋人希望这个估值最小,因此在计算机决策是就用递归的向前看,这里的递归其实蛮不好理解的,但是可以宏观的去理解。 下面是代码的构成: 一个ChessBoard的类用来处

使用verilog实现井字棋游戏设计及其testbench

井字棋是一种经典的二人策略棋类游戏,也被称为Tic-Tac-Toe。游戏通常在一个3x3的方格棋盘上进行,每名玩家轮流在空格中放置自己的标记,一般玩家1使用"X"标记,玩家2使用"O"标记,直到有一名玩家在水平、垂直或对角线上连成三个自己的标记为止。 井字棋的规则非常简单: 游戏开始时,棋盘为空,交替玩家轮流落子。每次落子,玩家可以选择一个未被占据的空格放置自己的标记。玩家目标是通过在水平、垂

基于剪枝的对抗性搜索的井字棋

基于剪枝对抗搜索的井子棋报告   1.问题 井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋比较类似,由于棋盘一般不画边框,格线排成井字故得名。只要一方的三个棋子连城一条线,就算胜出。 玩过这个游戏的人大都会发现,如果两个玩家都作出最好的选择,这个游戏是一定会平局的。所以,井字棋最常使用是作为儿童游戏。虽然这个游戏看上去很简单,但是它的整个过程却复杂得多

python3.6 ai井字棋 alpha-beta剪枝3

所有代码:  import numpy as npfrom tkinter import *class Game(object):def __init__(self):self.chess = np.zeros((3, 3), dtype=int) # 棋盘状态数组 0---空格 1---叉电脑 2---圈玩家self.iscircle = True # 当前圈下,默认玩家先手sel

小项目_井字棋小游戏

学习目标: C语言编程小游戏 学习内容: C语言的数组、函数灵活运用 程序: (1)game.h 函数声明、常量定义、头文件 在代码中尽量使用define定义常量,便于修改 (2)test.c 主函数、菜单函数、游戏实现函数 (3)game.c 数组初始化函数、棋盘打印函数、玩家下棋坐标判断函数、电脑下棋随机生成坐标函数 不足: 在电脑下棋中只是自动生成随机坐标,

小游戏和GUI编程(6) | 基于 SFML 的井字棋

小游戏和GUI编程(6) | 基于 SFML 的井字棋 0. 简介 使用 SFML 实现井字棋(tic-tac-toe), 规划如下: 了解规则, 使用命令行实现(已经实现了)使用 SFML,提供极简的交互(预计 1 小时)制作 SVG 图像, 美化界面(预计 1 小时) 1. 基于命令行的实现 实现了两个用户 X 和 O 的交互下棋, 判断了输赢、 平局: 有胜负: 每个用户落下棋子