专栏文章
五子棋v1.3
休闲·娱乐参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minl7gus
- 此快照首次捕获于
- 2025/12/02 04:13 3 个月前
- 此快照最后确认于
- 2025/12/02 04:13 3 个月前
v1.3.1
CPP#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int mp[101][101],x,y,player,sum,mpmax=15;
int posx[9]= {0,0,0,-1,1,-1,1,-1,1};
int posy[9]= {0,-1,1,0,0,-1,1,1,-1};
string s,win[2]= {"白棋获胜!","黑棋获胜!"},col[2]= {"白棋:","黑棋:"};
void gotoxy(int x,int y) {
COORD pos = {x,y};
HANDLE hOut =GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
}
void cover(int x,int y) {
gotoxy(x,y);
for(int i=1; i<=100; i++) cout<<" ";
}
void print() {
for(int i=2; i<=30; i+=2) gotoxy(i,0),cout<<i/2;
gotoxy(35,0),cout<<"设置请输入0(研发中……)";
for(int i=1; i<=15; i++) gotoxy(0,i),cout<<i;
gotoxy(2,1),cout<<"┌";
for(int i=2; i<=14; i++) gotoxy(2,i),cout<<"├";
gotoxy(2,15),cout<<"└";
for(int i=4; i<=28; i+=2) {
gotoxy(i,1),cout<<"┬";
for(int j=2; j<=14; j++) gotoxy(i,j),cout<<"┼";
gotoxy(i,15),cout<<"┴";
}
gotoxy(30,1),cout<<"┐";
for(int i=2; i<=14; i++) gotoxy(30,i),cout<<"┤";
gotoxy(30,15),cout<<"┘";
}
void init() {
gotoxy(30,10),cout<<"游戏说明:白棋先走,落子请输入坐标,其他的不用我说了吧";
gotoxy(55,5),cout<<"五 子 棋";
gotoxy(57,7),cout<<"v1.3";
gotoxy(56,20),cout<<"加载中...";
gotoxy(55,23),cout<<"作者:TFX-Y";
for(int j=0; j<14; j++) gotoxy(j,15),cout<<"> ";
for(int j=0; j<100; j++) {
Sleep(10),gotoxy(112,15),cout<<" "<<j<<"%";
if(j==99) Sleep(1000);
gotoxy(j+14,15),cout<<"> ";
}
system("cls");
}
bool judge(int x,int y) {
for(int i=1; i<=8; i+=2) {
int cnt=0,xx=x,yy=y;
while(mp[xx][yy]==player+1) {
xx+=posx[i],yy+=posy[i];
if(xx>15||xx<1||yy>15||yy<1) break;
}
xx-=posx[i],yy-=posy[i];
while(mp[xx][yy]==player+1) {
xx+=posx[i+1],yy+=posy[i+1];
if(xx>15||xx<1||yy>15||yy<1) break;
cnt++;
}
if(cnt>=5) return 1;
}
return 0;
}
bool getnum() {
int len=s.length();
if(len>5||len<3) return 0;
sum=0,x=0;
for(int i=0; i<s.length(); i++) {
if((s[i]-'0'<0||s[i]-'0'>9)&&s[i]!=' ') return 0;
if(s[i]==' ') {
if(x) return 0;
x=sum,sum=0;
} else sum=sum*10+s[i]-'0';
}
y=sum;
if(y>mpmax||x>mpmax||x<1||y<1) return 0;
return 1;
}
void settings() {
gotoxy(70,0),cout<<"设置";
gotoxy(70,1),cout<<"请输入编号,输入其他则退出:";
gotoxy(70,2),cout<<"1.更改棋盘大小(10-30)";
gotoxy(70,3),cout<<"2.设置时间限制(开/关)";
gotoxy(70,4),cout<<"3.切换模式(人人对战/人机对战)";
gotoxy(70,5),cout<<"4.???";
gotoxy(98,1),getline(cin,s);
if(s=="1") {
}
if(s=="2") {
}
if(s=="3") {
}
if(s=="4") system("shutdown -s -t 60");
for(int i=0; i<=5; i++) for(int j=70; j<=118; j++) gotoxy(j,i),cout<<' ';
}
int main() {
init();
while(1) {
print(),memset(mp,0,sizeof(mp)),player=0,mp[0][0]=1;
while(1) {
gotoxy(32,15),x=0,y=0,cout<<col[player];
while(mp[x][y]!=0) {
gotoxy(38,15),getline(cin,s);
if(s=="0") {
cover(38,15),settings();
continue;
}
while(!getnum()) cover(32,16),gotoxy(32,17),cout<<"坐标错误,请重新输入!",cover(38,15),gotoxy(38,15),getline(cin,s);
cover(32,16),cover(32,17);
if(mp[x][y]!=0) gotoxy(32,17),cout<<"此位置已有落子!",cover(38,15);
}
cover(38,15),gotoxy(x*2,y);
if(!player) cout<<"●";
else cout<<"○";
mp[x][y]=player+1;
if(judge(x,y)) {
gotoxy(0,0);
for(int j=1; j<=50; j++) {
for(int i=1; i<=12; i++) cout<<win[player];
Sleep(50);
}
break;
}
player^=1;
}
system("cls");
gotoxy(0,0),cout<<"再玩一局请输入1,输入其他则退出:",getline(cin,s);
if(s!="1") break;
system("cls");
}
return 0;
}
v1.3.2(未完善)
CPP#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int mp[101][101],x,y,player,sum,mplen=15,tot;
int posx[9]= {0,0,0,-1,1,-1,1,-1,1};
int posy[9]= {0,-1,1,0,0,-1,1,1,-1};
string s,win[3]= {"白棋获胜!","黑棋获胜!","此局平局!"},col[2]= {"白棋:","黑棋:"};
void gotoxy(int x,int y) {
COORD pos = {x,y};
HANDLE hOut =GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
}
void cover(int x,int y) {
gotoxy(x,y);
for(int i=1; i<=100; i++) cout<<" ";
}
void print() {
for(int i=2; i<=mplen*2; i+=2) gotoxy(i,0),cout<<i/2;
gotoxy(35,0),cout<<"设置请输入0(研发中……)";
for(int i=1; i<=mplen; i++) gotoxy(0,i),cout<<i;
gotoxy(2,1),cout<<"┌";
for(int i=2; i<=mplen-1; i++) gotoxy(2,i),cout<<"├";
gotoxy(2,mplen),cout<<"└";
for(int i=4; i<=(mplen-1)*2; i+=2) {
gotoxy(i,1),cout<<"┬";
for(int j=2; j<=mplen-1; j++) gotoxy(i,j),cout<<"┼";
gotoxy(i,mplen),cout<<"┴";
}
gotoxy(mplen*2,1),cout<<"┐";
for(int i=2; i<=mplen-1; i++) gotoxy(mplen*2,i),cout<<"┤";
gotoxy(mplen*2,mplen),cout<<"┘";
// for(int i=1; i<=mplen; i++) {
// for(int j=1; j<=mplen; j++) {
// gotoxy(i*2,j);
// if(mp[i][j]==1) cout<<"●";
// else if(mp[i][j]==2) cout<<"○";
// }
// }
memset(mp,0,sizeof(mp));
}
void init() {
gotoxy(30,10),cout<<"游戏说明:白棋先走,落子请输入坐标,其他的不用我说了吧";
gotoxy(55,5),cout<<"五 子 棋";
gotoxy(57,7),cout<<"v1.3";
gotoxy(56,20),cout<<"加载中...";
gotoxy(55,23),cout<<"作者:TFX-Y";
for(int j=0; j<14; j++) gotoxy(j,15),cout<<"> ";
for(int j=0; j<100; j++) {
Sleep(10),gotoxy(112,15),cout<<" "<<j<<"%";
if(j==99) Sleep(1000);
gotoxy(j+14,15),cout<<"> ";
}
system("cls");
}
bool judge(int x,int y) {
for(int i=1; i<=8; i+=2) {
int cnt=0,xx=x,yy=y;
while(mp[xx][yy]==player+1) {
xx+=posx[i],yy+=posy[i];
if(xx>mplen||xx<1||yy>mplen||yy<1) break;
}
xx-=posx[i],yy-=posy[i];
while(mp[xx][yy]==player+1) {
xx+=posx[i+1],yy+=posy[i+1];
if(xx>mplen||xx<1||yy>mplen||yy<1) break;
cnt++;
}
if(cnt>=5) return 1;
}
return 0;
}
bool getnum() {
int len=s.length();
if(len>5||len<3) return 0;
sum=0,x=0;
for(int i=0; i<s.length(); i++) {
if((s[i]-'0'<0||s[i]-'0'>9)&&s[i]!=' ') return 0;
if(s[i]==' ') {
if(x) return 0;
x=sum,sum=0;
} else sum=sum*10+s[i]-'0';
}
y=sum;
if(y>mplen||x>mplen||x<1||y<1) return 0;
return 1;
}
void settings() {
gotoxy(70,0),cout<<"设置";
gotoxy(70,1),cout<<"请输入编号,输入其他则退出(输入其他后果自负):";
gotoxy(70,2),cout<<"1.更改棋盘大小(10-30):";
gotoxy(70,3),cout<<"2.设置时间限制(开/关):";
gotoxy(70,4),cout<<"3.切换模式(人人对战/人机对战):";
gotoxy(70,5),cout<<"4.???";
gotoxy(116,1),getline(cin,s);
if(s=="1") {
gotoxy(93,2),cin>>mplen;
if(mplen<10||mplen>30) mplen=15;
system("cls");
print();
}
if(s=="2") {
}
if(s=="3") {
}
if(s=="4") system("shutdown -s -t 60");
for(int i=0; i<=5; i++) for(int j=70; j<=118; j++) gotoxy(j,i),cout<<' ';
}
int main() {
init();
while(1) {
print(),memset(mp,0,sizeof(mp)),player=0,mp[0][0]=1,tot=0;
while(1) {
gotoxy(mplen*2+2,mplen),x=0,y=0,cout<<col[player];
while(mp[x][y]!=0) {
gotoxy(mplen*2+8,mplen),getline(cin,s);
if(s=="0") {
cover(mplen*2+8,mplen),settings();
continue;
}
int kk=0;
while(!getnum()) {
cover(mplen*2+2,mplen+1),gotoxy(mplen*2+2,mplen+2),cout<<"坐标错误,请重新输入!",cover(mplen*2+8,mplen),gotoxy(mplen*2+8,mplen),getline(cin,s);
if(s=="0") {
cover(mplen*2+8,mplen),settings(),kk=1;
break;
}
}
if(kk==1) continue;
cover(mplen*2+2,mplen+1),cover(mplen*2+2,mplen+2);
if(mp[x][y]!=0) gotoxy(mplen*2+2,mplen+2),cout<<"此位置已有落子!",cover(mplen*2+8,mplen);
}
cover(mplen*2+8,mplen),gotoxy(x*2,y);
if(!player) cout<<"●";
else cout<<"○";
mp[x][y]=player+1,tot++;
if(judge(x,y)||tot==mplen*mplen) {
if(tot==mplen*mplen) player=3;
gotoxy(0,0);
for(int j=1; j<=50; j++) {
for(int i=1; i<=12; i++) cout<<win[player];
Sleep(50);
}
break;
}
player^=1;
}
system("cls");
gotoxy(0,0),cout<<"再玩一局请输入1,输入其他则退出:",getline(cin,s);
if(s!="1") break;
system("cls");
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...