这是在之前【C++ 程序】 井字棋游戏(人 VS Lv3电脑)(战绩统计版)的基础上运用 EasyX 图形库完成的可视化程序。
程序
//This program is a simple tic-tac-toe game.
#include <iostream>
#include <string>
#include <cstddef>
#include <stdexcept>
#include <Windows.h>
#include <graphics.h>
#include <conio.h>
#include <ctime>
#include <vector>
using namespace std;
IMAGE imageX, image0, imageXt, image0t, imageXw, image0w, imageD;
vector<vector<char>> point_now{
{
' ', ' ', ' '},{
' ', ' ', ' '},{
' ', ' ', ' '} };
const string location_computer[3][3] = {
{
"A1","A2","A3"},{
"B1","B2","B3"},{
"C1","C2","C3"} };
char player = 'X';
char computer_player = 'X';
unsigned step_count = 0;
int win_lose(vector<vector<char>> point, int n)
{
if (point[0][0] == point[0][1] && point[0][1] == point[0][2] && point[0][0] == 'X') return 1; // X wins
if (point[1][0] == point[1][1] && point[1][1] == point[1][2] && point[1][0] == 'X') return 1; // X wins
if (point[2][0] == point[2][1] && point[2][1] == point[2][2] && point[2][0] == 'X') return 1; // X wins
if (point[0][0] == point[1][0] && point[1][0] == point[2][0] && point[0][0] == 'X') return 1; // X wins
if (point[0][1] == point[1][1] && point[1][1] == point[2][1] && point[0][1] == 'X') return 1; // X wins
if (point[0][2] == point[1][2] && point[1][2] == point[2][2] && point[0][2] == 'X') return 1; // X wins
if (point[0][0] == point[1][1] && point[1][1] == point[2][2] && point[1][1] == 'X') return 1; // X wins
if (point[0][2] == point[1][1] && point[1][1] == point[2][0] && point[1][1] == 'X') return 1; // X wins
if (point[0][0] == point[0][1] && point[0][1] == point[0][2] && point[0][0] == '0') return 2; // 0 wins
if (point[1][0] == point[1][1] && point[1][1] == point[1][2] && point[1][0] == '0') return 2; // 0 wins
if (point[2][0] == point[2][1] && point[2][1] == point[2][2] && point[2][0] == '0') return 2; // 0 wins
if (point[0][0] == point[1][0] && point[1][0] == point[2][0] && point[0][0] == '0') return 2; // 0 wins
if (point[0][1] == point[1][1] && point[1][1] == point[2][1] && point[0][1] == '0') return 2; // 0 wins
if (point[0][2] == point[1][2] && point[1][2] == point[2][2] && point[0][2] == '0') return 2; // 0 wins
if (point[0][0] == point[1][1] && point[1][1] == point[2][2] && point[1][1] == '0') return 2; // 0 wins
if (point[0][2] == point[1][1] && point[1][1] == point[2][0] && point[1][1] == '0') return 2; // 0 wins
if (n == 9) return 3; // end up in a draw
else return 0; // unfinished
}
void game_player_change(char& player)
{
if (player == 'X')
player = '0'; // X -> 0
else player = 'X';// 0 -> X
}
void init1()
{
initgraph(1200, 800);
loadimage(0, _T("Welcome.jpg"), 1200, 800);
Sleep(3000);
}
void init2()
{
loadimage(0, _T("Board.jpg"), 1200, 800);// the board
}
string man_input()
{
int Check = 0;
string ret = "00";
while (Check == 0)
{
if (MouseHit())
{
MOUSEMSG mouse = GetMouseMsg();
if (mouse.uMsg == WM_LBUTTONDOWN)
{
/**/ if (mouse.y > 150 && mouse.y < 350) ret[0] = 'A';
else if (mouse.y > 350 && mouse.y < 550) ret[0] = 'B';
else if (mouse.y > 550 && mouse.y < 750) ret[0] = 'C';
/**/ if (mouse.x > 100 && mouse.x < 300) ret[1] = '1';
else if (mouse.x > 300 && mouse.x < 500) ret[1] = '2';
else if (mouse.x > 500 && mouse.x < 700) ret[1] = '3';
}
}
if (ret[0] != '0' && ret[1] != '0')
if (point_now[ret[0] - 65][ret[1] - 49] == ' ')
Check = 1; // indicate it's a legal click
}
return ret;
}
string computer1(vector<vector<char>> p) // Computer Lv.1
{
string ret;
unsigned available_n = 49;
for (int c_i = 0; c_i != 3; c_i++)
{
for (int c_j = 0; c_j != 3; c_j++)
{
if ((p[c_i][c_j] != 'X') && (p[c_i][c_j] != '0'))
p[c_i][c_j] = available_n++; // mark empty places with numbers 1,2,3...
}
}
srand((unsigned)time(NULL));
int ran = rand() % (available_n - 49) + 49; // generate a random number
for (int c_i = 0; c_i != 3; c_i++)
{
for (int c_j = 0; c_j != 3; c_j++)
{
if (p[c_i][c_j] == ran)
ret = location_computer[c_i][c_j]; // the chosen place
}
}
for (int c_i = 0; c_i != 3; c_i++)
{
for (int c_j = 0; c_j != 3; c_j++)
{
if ((p[c_i][c_j] != 'X') && (p[c_i][c_j] != '0'))
p[c_i][c_j] = ' '; // return to Space
}
}
return ret; // this is the copmuter-chosen location
}
string computer2(vector<vector<char>> p) // Computer Lv.2
{
char man_player = (computer_player == 'X') ? '0' : 'X'; // define man_player
/**/ if (p[0][0] == computer_player && p[0][2] == computer_player && p[0][1] == ' ') return location_computer[0][1];
else if (p[0][0] == computer_player && p[0][1] == computer_player && p[0][2] == ' ') return location_computer[0][2];
else if (p[0][1] == computer_player && p[0][2] == computer_player && p[0][0] == ' ') return location_computer[0][0]; // Row A
else if (p[1][0] == computer_player && p[1][2] == computer_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[1][0] == computer_player && p[1][1] == computer_player && p[1][2] == ' ') return location_computer[1][2];
else if (p[1][1] == computer_player && p[1][2] == computer_player && p[1][0] == ' ') return location_computer[1][0]; // Row B
else if (p[2][0] == computer_player && p[2][2] == computer_player && p[2][1] == ' ') return location_computer[2][1];
else if (p[2][0] == computer_player && p[2][1] == computer_player && p[2][2] == ' ') return location_computer[2][2];
else if (p[2][1] == computer_player && p[2][2] == computer_player && p[2][0] == ' ') return location_computer[2][0]; // Row C
else if (p[0][0] == computer_player && p[2][0] == computer_player && p[1][0] == ' ') return location_computer[1][0];
else if (p[0][0] == computer_player && p[1][0] == computer_player && p[2][0] == ' ') return location_computer[2][0];
else if (p[1][0] == computer_player && p[2][0] == computer_player && p[0][0] == ' ') return location_computer[0][0]; // Column 1
else if (p[0][1] == computer_player && p[2][1] == computer_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[0][1] == computer_player && p[1][1] == computer_player && p[2][1] == ' ') return location_computer[2][1];
else if (p[1][1] == computer_player && p[2][1] == computer_player && p[0][1] == ' ') return location_computer[0][1]; // Column 2
else if (p[0][2] == computer_player && p[2][2] == computer_player && p[1][2] == ' ') return location_computer[1][2];
else if (p[0][2] == computer_player && p[1][2] == computer_player && p[2][2] == ' ') return location_computer[2][2];
else if (p[1][2] == computer_player && p[2][2] == computer_player && p[0][2] == ' ') return location_computer[0][2]; // Column 3
else if (p[0][0] == computer_player && p[2][2] == computer_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[0][0] == computer_player && p[1][1] == computer_player && p[2][2] == ' ') return location_computer[2][2];
else if (p[1][1] == computer_player && p[2][2] == computer_player && p[0][0] == ' ') return location_computer[0][0]; // Diagonal 1
else if (p[0][2] == computer_player && p[2][0] == computer_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[0][2] == computer_player && p[1][1] == computer_player && p[2][0] == ' ') return location_computer[2][0];
else if (p[1][1] == computer_player && p[2][0] == computer_player && p[0][2] == ' ') return location_computer[0][2]; // Diagonal 2
else if (p[0][0] == man_player && p[0][2] == man_player && p[0][1] == ' ') return location_computer[0][1];
else if (p[0][0] == man_player && p[0][1] == man_player && p[0][2] == ' ') return location_computer[0][2];
else if (p[0][1] == man_player && p[0][2] == man_player && p[0][0] == ' ') return location_computer[0][0]; // Row A
else if (p[1][0] == man_player && p[1][2] == man_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[1][0] == man_player && p[1][1] == man_player && p[1][2] == ' ') return location_computer[1][2];
else if (p[1][1] == man_player && p[1][2] == man_player && p[1][0] == ' ') return location_computer[1][0]; // Row B
else if (p[2][0] == man_player && p[2][2] == man_player && p[2][1] == ' ') return location_computer[2][1];
else if (p[2][0] == man_player && p[2][1] == man_player && p[2][2] == ' ') return location_computer[2][2];
else if (p[2][1] == man_player && p[2][2] == man_player && p[2][0] == ' ') return location_computer[2][0]; // Row C
else if (p[0][0] == man_player && p[2][0] == man_player && p[1][0] == ' ') return location_computer[1][0];
else if (p[0][0] == man_player && p[1][0] == man_player && p[2][0] == ' ') return location_computer[2][0];
else if (p[1][0] == man_player && p[2][0] == man_player && p[0][0] == ' ') return location_computer[0][0]; // Column 1
else if (p[0][1] == man_player && p[2][1] == man_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[0][1] == man_player && p[1][1] == man_player && p[2][1] == ' ') return location_computer[2][1];
else if (p[1][1] == man_player && p[2][1] == man_player && p[0][1] == ' ') return location_computer[0][1]; // Column 2
else if (p[0][2] == man_player && p[2][2] == man_player && p[1][2] == ' ') return location_computer[1][2];
else if (p[0][2] == man_player && p[1][2] == man_player && p[2][2] == ' ') return location_computer[2][2];
else if (p[1][2] == man_player && p[2][2] == man_player && p[0][2] == ' ') return location_computer[0][2]; // Column 3
else if (p[0][0] == man_player && p[2][2] == man_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[0][0] == man_player && p[1][1] == man_player && p[2][2] == ' ') return location_computer[2][2];
else if (p[1][1] == man_player && p[2][2] == man_player && p[0][0] == ' ') return location_computer[0][0]; // Diagonal 1
else if (p[0][2] == man_player && p[2][0] == man_player && p[1][1] == ' ') return location_computer[1][1];
else if (p[0][2] == man_player && p[1][1] == man_player && p[2][0] == ' ') return location_computer[2][0];
else if (p[1][1] == man_player && p[2][0] == man_player && p[0][2] == ' ') return location_computer[0][2]; // Diagonal 2
else return computer1(point_now);
}
string computer3(vector<vector<char>> p) // Computer Lv.3
{
vector<vector<char>> p001 = {
{
' ',' ',' '},{
' ',' ',' '},{
' ',' ',' '} }; // 0
vector<vector<char>> p002 = {
{
'X',' ',' '},{
' ',' ',' '},{
' ',' ',' '} }; // 1
vector<vector<char>> p003 = {
{
' ','X',' '},{
' ',' ',' '},{
' ',' ',' '} }; // 1
vector<vector<char>> p004 = {
{
' ',' ','X'},{
' ',' ',' '},{
' ',' ',' '} }; // 1
vector<vector<char>> p005 = {
{
' ',' ',' '},{
'X',' ',' '},{
' ',' ',' '} }; // 1
vector<vector<char>> p006 = {
{
' ',' ',' '},{
' ',' ','X'},{
' ',' ',' '} }; // 1
vector<vector<char>> p007 = {
{
' ',' ',' '},{
' ',' ',' '},{
'X',' ',' '} }; // 1
vector<vector<char>> p008 = {
{
' ',' ',' '},{
' ',' ',' '},{
' ','X',' '} }; // 1
vector<vector<char>> p009 = {
{
' ',' ',' '},{
' ',' ',' '},{
' ',' ','X'} }; // 1
vector<vector<char>> p010 = {
{
' ',' ',' '},{
' ','X',' '},{
' ',' ',' '} }; // 1
vector<vector<char>> p011 = {
{
'X','0',' '},{
' ',' ',' '},{
' ',' ',' '} }; // 2
vector<vector<char>> p012 = {
{
'X',' ','0'},{
' ',' ',' '},{
' ',' ',' '} }; // 2
vector<vector<char>> p013 = {
{
'X',' ',' '},{
'0',' ',' '},{
' ',' ',' '} }; // 2
vector<vector<char>> p014 = {
{
'X',' ',' '},{
' ','0',' '},{
' ',' ',' '} }; // 2
vector<vector<char>> p015 = {
{
'X',' ',' '},{
' ',' ','0'},{
' ',' ',' '} }; // 2
vector<vector<char>> p016 = {
{
'X',' ',' '},{
' ',' ',' '},{
'0',' ',' '} }; // 2
vector<vector<char>> p017 = {
{
'X',' ',' '},{
' ',' ',' '},{
' ','0',' '} }; // 2
vector<vector<char>> p018 = {
{
'X',' ',' '},{
' ',' ',' '},{
' ',' ','0'} }; // 2
vector<vector<char>> p019 = {
{
'X',' ',' '},{
' ','0','X'},{
' ',' ',' '} }; // 3
vector<vector<char>> p020 = {
{
'X',' ',' '},{
' ','0',' '},{
' ','X',' '} }; // 3
vector<vector<char>> p021 = {
{
'X',' ',' '},{
' ','0',' '},{
' ',' ','X'} }; // 3
vector<vector<char>> p022 = {
{
' ',' ','X'},{
' ','0',' '},{
'X',' ',' '} }; // 3
vector<vector<char>> p023 = {
{
' ',' ','X'},{
' ','0',' '},{
' ','X',' '} }; // 3
vector<vector<char>> p024 = {
{
' ',' ','X'},{
'X','0',' '},{
' ',' ',' '} }; // 3
vector<vector<char>> p025 = {
{
' ',' ',' '},{
'X','0',' '},{
' ',' ','X'} }; // 3
vector<vector<char>> p026 = {
{
' ','X',' '},{
' ','0',' '},{
' ',' ','X'} }; // 3
vector<vector<char>> p027 = {
{
' ','X',' '},{
' ','0',' '},{
'X',' ',' '} }; // 3
vector<vector<char>> p028 = {
{
' ',' ',' '},{
' ','0','X'},{
'X',' ',' '} }; // 3
vector<vector<char>> p029 = {
{
' ','X',' '},{
'X','0',' '},{
' ',' ',' '} }; // 3
vector<vector<char>> p030 = {
{
' ','X',' '},{
' ','0','X'},{
' ',' ',' '} }; // 3
vector<vector<char>> p031 = {
{
' ',' ',' '},{
' ','0','X'},{
' ','X',' '} }; // 3
vector<vector<char>> p032 = {
{
' ',' ',' '},{
'X','0',' '},{
' ','X',' '} }; // 3
vector<vector<char>> p033 = {
{
' ','X',' '},{
' ','0',' '},{
' ','X',' '} }; // 3
vector<vector<char>> p034 = {
{
' ',' ',' '},{
'X','0','X'},{
' ',' ',' '} }; // 3
vector<vector<char>> p035 = {
{
'0',' ',' '},{
' ','X',' '},{
' ',' ','X'} }; // 3
vector<vector<char>> p036 = {
{
'X','0',' '},{
' ','X',' '},{
' ',' ','0'} }; // 4
vector<vector<char>> p037 = {
{
'X',' ',' '},{
'0','X',' '},{
' ',' ','0'} }; // 4
vector<vector<char>> p038 = {
{
'X','0','X'},{
' ',' ',' '},{
'0',' ','X'} }; // 4
vector<vector<char>> p039 = {
{
'X',' ','0'},{
'0',' ',' '},{
'X',' ',' '} }; // 4
vector<vector<char>> p040 = {
{
'X',' ',' '},{
' ','0','X'},{
' ','X','0'} }; // 5
vector<vector<char>> p041 = {
{
' ',' ','X'},{
'X','0',' '},{
'0','X',' '} }; // 5
vector<vector<char>> p042 = {
{
'0','X',' '},{
'X','0',' '},{
' ',' ','X'} }; // 5
vector<vector<char>> p043 = {
{
' ','X','0'},{
' ','0','X'},{
'X',' ',' '} }; // 5
/**/ if (p == p001 || p == p010 || p == p025 || p == p026 || p == p029 || p == p041 || p == p043) return "A1";
else if (p == p034) return "A2";
else if (p == p016 || p == p018 || p == p027 || p == p028 || p == p030 || p == p037 || p == p040) return "A3";
else if (p == p002 || p == p003 || p == p004 || p == p005 || p == p006 || p == p007 || p == p008 ||
/* */p == p009 || p == p011 || p == p013 || p == p015 || p == p017) return "B2";
else if (p == p033) return "B3";
else if (p == p012 || p == p023 || p == p024 || p == p032 || p == p035 || p == p036 || p == p042) return "C1";
else if (p == p021 || p == p022) return "C2";
else if (p == p014 || p == p019 || p == p020 || p == p031 || p == p038 || p == p039) return "C3";
else return computer2(p);
}
void chess(string str, char c)
{
if (c == 'X')
{
loadimage(&imageX, _T("X.jpg"), 180, 180);
/**/ if (str == "A1") putimage(110, 160, &imageX);
else if (str == "A2") putimage(314, 160, &imageX);
else if (str == "A3") putimage(518, 160, &imageX);
else if (str == "B1") putimage(110, 360, &imageX);
else if (str == "B2") putimage(314, 360, &imageX);
else if (str == "B3") putimage(518, 360, &imageX);
else if (str == "C1") putimage(110, 560, &imageX);
else if (str == "C2") putimage(314, 560, &imageX);
else if (str == "C3") putimage(518, 560, &imageX);
}
else
{
loadimage(&image0, _T("0.jpg"), 180, 180);
/**/ if (str == "A1") putimage(110, 160, &image0);
else if (str == "A2") putimage(314, 160, &image0);
else if (str == "A3") putimage(518, 160, &image0);
else if (str == "B1") putimage(110, 360, &image0);
else if (str == "B2") putimage(314, 360, &image0);
else if (str == "B3") putimage(518, 360, &image0);
else if (str == "C1") putimage(110, 560, &image0);
else if (str == "C2") putimage(314, 560, &image0);
else if (str == "C3") putimage(518, 560, &image0);
}
}
void tip(char c)
{
if (c == 'X')
{
loadimage(&imageXt, _T("Xt.jpg"), 100, 100);
putimage(1040, 190, &imageXt);
}
else
{
loadimage(&image0t, _T("0t.jpg"), 100, 100);
putimage(1040, 190, &image0t);
}
}
char Man_or_Computer_input()
{
char ret = '0';
if (MouseHit())
{
MOUSEMSG mouse = GetMouseMsg();
if (mouse.uMsg == WM_LBUTTONDOWN)
{
/**/ if (mouse.y > 0 && mouse.y < 450) ret = '1';
else if (mouse.y > 450 && mouse.y < 800) ret = '2';
}
}
return ret;
}
char difficulty_input()
{
char ret = '0';
if (MouseHit())
{
MOUSEMSG mouse = GetMouseMsg();
if (mouse.uMsg == WM_LBUTTONDOWN)
{
/**/ if (mouse.y > 0 && mouse.y < 350) ret = '1';
else if (mouse.y > 350 && mouse.y < 550) ret = '2';
else if (mouse.y > 550 && mouse.y < 800) ret = '3';
}
}
return ret;
}
/*
vector<char> to_char(unsigned n)
{
char c[2] = {'0','0'};
if (n > 9)
{
c[0] = n % 10 + 48;
c[1] = n / 10 + 48;
}
return { c[0],c[1] };
}
*/
void total_result(unsigned com_win, unsigned man_win, unsigned draw)
{
setbkcolor(RGB(253, 236, 166)); // set the background colour
settextstyle(60, 30, _T("Times New Roman")); // set the sytle
settextcolor(BLUE); // set the colour
TCHAR s1[5], s2[5], s3[5], s4[5], s5[5], s6[5];
swprintf_s(s1, _T("%d"), man_win);
swprintf_s(s2, _T("%d"), com_win);
swprintf_s(s3, _T("%d"), draw);
swprintf_s(s4, _T("%d"), com_win);
swprintf_s(s5, _T("%d"), man_win);
swprintf_s(s6, _T("%d"), draw); // change into string first
outtextxy(165, 340, s1);
outtextxy(370, 340, s2);
outtextxy(575, 340, s3);
outtextxy(165, 565, s4);
outtextxy(370, 565, s5);
outtextxy(575, 565, s6); // print
}
int main()
{
init1();
char play_again('1');
unsigned com_win = 0, man_win = 0, draw = 0;
char Man_or_Computer = '0';
loadimage(0, _T("Choice1.jpg"), 1200, 800);
while (Man_or_Computer == '0')
{
Man_or_Computer = Man_or_Computer_input();
}
while (play_again == '1')
{
char difficulty = '0'; // default setup
if (Man_or_Computer == '2') // for Man VS Computer
{
loadimage(0, _T("Choice2.jpg"), 1200, 800);
while (difficulty == '0')
{
difficulty = difficulty_input();
}
loadimage(0, _T("Choice3.jpg"), 1200, 800);
char You_or_Computer = '0';
while (You_or_Computer == '0')
{
You_or_Computer = Man_or_Computer_input();
}
if (You_or_Computer == '1')
computer_player = '0';
else computer_player = 'X';
}
init2();
while (win_lose(point_now, step_count) == 0)
{
string location;
unsigned location_letter = 0; // A/B/C
unsigned location_number = 0; // 1/2/3
tip(player);
if(Man_or_Computer == '1')
location = man_input();
else
{
if (player == computer_player)
{
if (difficulty == '1') location = computer1(point_now);
else if (difficulty == '2') location = computer2(point_now);
else location = computer3(point_now);
}
else location = man_input();
}
chess(location, player); // print the chess
switch (location[0])
{
case 'A':
location_letter = 0;
break;
case 'B':
location_letter = 1;
break;
case 'C':
location_letter = 2;
break;
default:
break;
}
switch (location[1])
{
case '1':
location_number = 0;
break;
case '2':
location_number = 1;
break;
case '3':
location_number = 2;
break;
default:
break;
}
point_now[location_letter][location_number] = player;
game_player_change(player); // change the player
++step_count; // count one more time
}
int final_result = win_lose(point_now, step_count);
char winner = 'N';
switch (final_result)
{
case 1:
loadimage(&imageXw, _T("Xw.jpg"), 390, 500);
putimage(780, 100, &imageXw);
winner = 'X';
break;
case 2:
loadimage(&image0w, _T("0w.jpg"), 390, 500);
putimage(780, 100, &image0w);
winner = '0';
break;
case 3:
loadimage(&imageD, _T("D.jpg"), 390, 500);
putimage(780, 100, &imageD);
++draw; // draw count
break;
}
if (Man_or_Computer == '2')
{
if (winner == computer_player)
++com_win;
else if (winner != 'N')
++man_win;
Sleep(5000); //wait for a moment
loadimage(0, _T("Choice4.jpg"), 1200, 800);
total_result(com_win, man_win, draw);
play_again = '0';
while (play_again == '0')
{
play_again = Man_or_Computer_input();
}
}
else
{
Sleep(5000); //wait for a moment
loadimage(0, _T("Choice5.jpg"), 1200, 800);
play_again = '0';
while (play_again == '0')
{
play_again = Man_or_Computer_input();
}
}
point_now = {
{
' ', ' ', ' '},{
' ', ' ', ' '},{
' ', ' ', ' '} }; // empyt the board
player = 'X';
computer_player = 'X';
step_count = 0;
}
getchar();
return 0;
}
//Copyright :2020 Teddy van Jerry
输出示例
以下:Man VS Man
以下是Man VS Computer:
素材
在 【C++ 程序】 井字棋游戏(人 VS 人)(Easy-X 图形界面)之外还有以下素材:(Choice1.jpg 到 Choice5.jpg)
分析
- 首先,应该建立游戏的逻辑,详见【C++ 程序】 井字棋游戏(人 VS Lv3电脑)(战绩统计版)。
- 其次,最重要的,是下载EasyX。这个百度上搜一下即可。
之后有安装提示可以下载。或者直接点击 https://docs.easyx.cn/en-us/intro。
- 然后记得要重启一次 Visual Studio 才有效。
- 然后加入
graphics.h
的头文件。 - 具体使用可在上面提供的介绍网站上找到。
- 由于我对 EasyX 不是很了解,所以画表格什么全是在 3D Paint 中完成。
- 关于328行背景颜色也是在 3D Paint 中找到的:
- 482行防闪屏。
- 输出数字我搞了好久没成功(注释掉的
to_char()
函数就是之前的尝试),后来发现网站上说的很清楚:
编译有错误,按照要求修改即可。
- 提醒:进行鼠标操作的函数应该嵌套在一个
while
中,否则会认为没有输入跳一下就没了。
ALL RIGHTS RESERVED © 2020 Teddy van Jerry
欢迎转载,转载请注明出处。
See also
【C++ 程序】 井字棋游戏(人 VS 人)
【C++ 程序】 井字棋游戏(人 VS Lv1电脑)
【C++ 程序】 井字棋游戏(人 VS Lv2电脑)
【C++ 程序】 井字棋游戏(人 VS Lv3电脑)
【C++ 程序】 井字棋游戏(人 VS Lv3电脑)(战绩统计版)
【C++ 程序】 五子棋游戏(人 VS 人)
【C++ 程序】 五子棋游戏(人 VS Lv1电脑)(思路及框架,内容待填充)
【C++ 程序】 随机数
【C++ 程序】 移动迷宫游戏
【C++ 程序】 贪吃蛇游戏
【C++ 程序】 数字推盘游戏(15-puzzle)
【C++ 程序】 2048游戏
【C++ 程序】 井字棋游戏(人 VS 人)(EasyX 图形界面)