「游戏」c++井字棋

这种井字棋,我是考古发现的,编写时前后隔了几天,思路有些混乱,对于凌乱的代码请不要介意

规则:
1.↑↓←→控制移动,【空格】放下棋子
2.棋盘为3 * 3的3 * 3的九宫格的九宫格(好绕啊)
3.当小型九宫格中有三颗你的棋子连成一线,那么这个小的九宫格就属于你的棋子格子,当大型九宫格中的格子连成一线时,你就赢了
4.你所可以下的格子与棋盘的位置关系,是相对应于对手所下的棋子与他所下的格子的关系,当你所可以下的格子已被占据时,你可以在整个棋盘里未被占据或未下棋子的地方下棋
视频教学【免费】

#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#include <ctime>

int a[4][4][4][4]; 
int winer[4][4];
int x1, yy1, x2, y2;
int now;

void print(int i, int j, int k, int l) {
   
	if(i == x1 && j == yy1 && k == x2 && l == y2) printf("+");
	else if(winer[i][j] == 1) printf("①");
	else if(winer[i][j] == 2) printf("②");
	else if(a[i][j][k][l] == 1) printf("●");
	else if(a[i][j][k][l] == 2) printf("○"); 
	else printf("㊣");
}

void put_map() {
   
	printf("┏━━┳━━┳━━┓┏━━┳━━┳━━┓┏━━┳━━┳━━┓\n┃");
	print(1, 1, 1, 1);
	printf("┃");
	print(1, 1, 1, 2);
	printf("┃");
	print(1, 1, 1, 3);
	printf("┃┃");
	print(1, 2, 1, 1);
	printf("┃");
	print(1, 2, 1, 2);
	printf("┃");
	print(1, 2, 1, 3);
	printf("┃┃");
	print(1, 3, 1, 1);
	printf("┃");
	print(1, 3, 1, 2);
	printf("┃");
	print(1, 3, 1, 3);
	printf("┃\n");
	printf("┣━━╋━━╋━━┃┃━━╋━━╋━━┃┃━━╋━━╋━━┫\n┃");
	print(1, 1, 2, 1);
	printf("┃");
	print(1, 1, 2, 2);
	printf("┃");
	print(1, 1, 2, 3);
	printf("┃┃");
	print(1, 2, 2, 1);
	printf("┃");
	print(1, 2, 2, 2);
	printf("┃");
	print(1, 2, 2, 3);
	printf("┃┃");
	print(1, 3, 2, 1);
	printf("┃");
	print(1, 3, 2, 2);
	printf("┃");
	print(1, 3, 2, 3);
	printf("┃\n");
	printf("┣━━╋━━╋━━┃┃━━╋━━╋━━┃┃━━╋━━╋━━┫\n┃");
	print(1, 1, 3, 1);
	printf("┃")
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++井字棋游戏代码可以使用EasyX图形库进行实现,下面是一个简单的示例代码: ``` #include <graphics.h> #include <conio.h> const int kBoardSize = 3; // 棋盘大小 // 绘制棋盘 void DrawBoard() { cleardevice(); // 清空屏幕 int width = getwidth() / kBoardSize; int height = getheight() / kBoardSize; // 绘制横线 for (int i = 1; i < kBoardSize; i++) { line(0, i * height, getwidth(), i * height); } // 绘制竖线 for (int i = 1; i < kBoardSize; i++) { line(i * width, 0, i * width, getheight()); } } // 下棋 void PlayChess(int row, int col, bool is_black) { int x = col * getwidth() / kBoardSize + getwidth() / kBoardSize / 2; int y = row * getheight() / kBoardSize + getheight() / kBoardSize / 2; if (is_black) { setcolor(BLACK); circle(x, y, getwidth() / kBoardSize / 2 - 10); } else { setcolor(WHITE); line(x - getwidth() / kBoardSize / 2 + 10, y - getheight() / kBoardSize / 2 + 10, x + getwidth() / kBoardSize / 2 - 10, y + getheight() / kBoardSize / 2 - 10); line(x - getwidth() / kBoardSize / 2 + 10, y + getheight() / kBoardSize / 2 - 10, x + getwidth() / kBoardSize / 2 - 10, y - getheight() / kBoardSize / 2 + 10); } } int main() { initgraph(600, 600); DrawBoard(); bool is_black = true; // 黑棋先手 while (true) { if (_kbhit()) { // 如果有按键按下 char ch = _getch(); if (ch == 27) break; // 如果是Esc键,退出游戏 int row = -1; int col = -1; bool can_put = false; switch (ch) { case 'q': row = 0; col = 0; can_put = true; break; case 'w': row = 0; col = 1; can_put = true; break; case 'e': row = 0; col = 2; can_put = true; break; case 'a': row = 1; col = 0; can_put = true; break; case 's': row = 1; col = 1; can_put = true; break; case 'd': row = 1; col = 2; can_put = true; break; case 'z': row = 2; col = 0; can_put = true; break; case 'x': row = 2; col = 1; can_put = true; break; case 'c': row = 2; col = 2; can_put = true; break; } if (can_put) { PlayChess(row, col, is_black); is_black = !is_black; } } } closegraph(); return 0; } ``` 此示例中,通过`initgraph`函数初始化图形界面,然后在`DrawBoard`函数中绘制棋盘,`PlayChess`函数用于在棋盘上下棋。在`main`函数中,通过`_kbhit`函数检测键盘是否有按键按下,然后根据按键的不同来确定落子的位置,通过`PlayChess`函数在棋盘上下棋,并通过`is_black`变量来控制黑白棋的交替。当按下Esc键时,游戏退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值