昂,第一次写那么大的程序,从有框架的想法到第一次正式运行总共耗时大概12小时吧。
各种新想法,新优化,debug什么的,目前会持续对其更新。
8说了,上代码,欢迎学习和意见。
(6.12今天VC出问题辽,差点代码就残缺了,还好有备份,然后才知道这个复制粘贴过去还得删除行数,太麻烦了,顺便把这里的代码显示行数关了,( •̀ .̫ •́ )✧还行吧。)
-----------------------------------------------------------------------------------------------

#include<bits/stdc++.h> #include<windows.h> typedef long double ll; int m,n; char pan[15][15]; ll visx[15][15]; ll viso[15][15]; int f[]={-1,-1,-1, 0};//方向 | / — int g[]={-1, 0, 1,-1}; int CMcheck[5],Difficult,PRvis; int special; struct point { int x,y; }p; //服务区 void loading(int p); int menu(); void funny(); //基本函数 int pd(int x); void Init(); void PR(); void PM(); void CM(int cn); void get(int cn); int check(int x,int y); void win(char winner); void CVis(); void Game(); //运算函数 int CK(int i,int k,int j,int jcn,char x,int cn,int jc); int ck(int i,int k,int j,char x,int cn); ll BC(int i,int k,char X); void jp(int i,int k,int j,int s[],ll &Q,ll &E,int &C,int p,char X); void sl(int i,int k,int j,int C,int &c,char x); void BFS(int x,int y,char X,int key,ll up); int main() { srand((int)time(0)); system("color"); while(1) { int key=menu(); system("cls"); if(key==1) { loading(4); puts("【提示:在落子时输入两个负数坐标可立即开始新的一局嗷】 输入格式为【数字空格数字】 回车键确认 ~( ̄▽ ̄)~ "); getchar(); Game(); } else if(key==0) { puts(" 好吧,希望下次能与您切磋 *( ̄︶ ̄)* "); break; } else puts("请按格式输入确认进行游戏~ ~( ̄▽ ̄)~ "); } return 0; } int menu() { int choice;special=0; do { printf(" 开发者:弥攸——可以关注公众号: 33[32m 代码小帮手 33[0m q(≧▽≦q) "); printf("=========================== "); printf("|| || "); printf("|| 1.开始游戏 || "); printf("|| || "); printf("|| 0.结束游戏 || "); printf("|| || "); printf("=========================== "); printf("请输入您的选择:"); scanf("%d",&choice); if(choice!=1&&choice!=0)funny(); }while(choice!=1&&choice!=0); if(!choice)return 0; do { system("cls"); loading(1); printf("========================================= "); printf("|| || "); printf("|| 1.以 【左 上】 为(0,0)的棋盘 || "); printf("|| (先纵坐标,再横坐标) || "); printf("|| || "); printf("|| 2.以 【左 下】 为(0,0)的棋盘 || "); printf("|| (先横坐标,再纵坐标) || "); printf("|| || "); printf("========================================= "); printf("请您选择更习惯的棋盘:"); scanf("%d",&PRvis); if(PRvis!=1&&PRvis!=2)funny(); }while(PRvis!=1&&PRvis!=2); do { system("cls"); loading(2); printf("请您继续选择棋盘规格N 【5<=N<=15】:"); scanf("%d",&m);n=m; if(m>15||m<5) { puts(" 不符合规格嗷,请重新输入 ~( ̄▽ ̄)~ "); Sleep(2000); system("cls"); } }while(m>15||m<5); do { system("cls"); loading(3); printf("================================= "); printf("|| || "); printf("|| 1.无心插柳柳成荫 || "); printf("|| || "); printf("|| 2.简单套路你能行 || "); printf("|| || "); printf("|| 3.唯有套路得我心 || "); printf("|| || "); printf("|| 4.人家叫我分水岭 || "); printf("|| || "); printf("|| 5.我若先手我无敌 || "); printf("|| || "); printf("|| 6.我就先手试试看 || "); printf("|| || "); printf("================================= "); printf("请选择难度:"); scanf("%d",&Difficult); getchar(); if(Difficult<1||Difficult>6)funny(); }while(Difficult<1||Difficult>6); return 1; } void funny() { puts(""); char s[99]={"看不见没有那个选项嘛? 不要对我有其他想法 我只是个没有感情的杀手"}; for(int i=0;s[i];++i) { printf("%c",s[i]); Sleep(50); if(i==21)Sleep(400); if(i==40)Sleep(400); } Sleep(600); puts(" ( ̄へ ̄) "); Sleep(1000); puts(" 别搞事情嗷 ( ̄▽ ̄) "); Sleep(2000); system("cls"); return ; } void loading(int p) { if(p!=4) { printf(" ============================ "); printf("|| 游戏准备进程:%d/4 || ",p); printf("============================ "); } else { printf(" ============================ "); printf("|| 游戏即将开始啦 || "); printf("============================ "); } printf("开发者:弥攸——可以关注公众号: 33[32m 代码小帮手 33[0m q(≧▽≦q) "); return ; } void Init() { for(int i=0;i<m;++i) for(int k=0;k<n;++k) { visx[i][k]=0; viso[i][k]=0; pan[i][k]=' '; } } int pd(int x) { if(x<0||x>=m)return 0; return 1; } void swap() { int t=p.y; p.y=p.x; p.x=m-t-1; } void PR() { /*/ //(以下是调试使用) puts("CVis X图:"); printf(" "); for(int k=0;k<n;++k) printf(" %2d ",k); puts(""); for(int i=0;i<m;++i) { printf(" "); for(int k=0;k<n;++k) printf(" -----"); puts(""); for(int k=0;k<n;++k) { if(!k)printf("%2d:|",i); printf("%4.1lf |",visx[i][k]); } puts(""); if(i==m-1) { printf(" "); for(int k=0;k<n;++k) printf(" -----"); puts(""); } } puts("CVis O图:"); printf(" "); for(int k=0;k<n;++k) printf(" %2d ",k); puts(""); for(int i=0;i<m;++i) { printf(" "); for(int k=0;k<n;++k) printf(" -----"); puts(""); for(int k=0;k<n;++k) { if(!k)printf("%2d:|",i); printf("%4.1lf |",viso[i][k]); } puts(""); if(i==m-1) { printf(" "); for(int k=0;k<n;++k) printf(" -----"); puts(""); } } //*/ system("cls"); puts(" 目前棋盘: "); int version=PRvis; if(version==1) { //以左上为00的坐标 printf(" "); for(int k=0;k<n;++k) printf(" %2d ",k); puts(""); for(int i=0;i<m;++i) { printf(" "); for(int k=0;k<n;++k) printf(" ----"); puts(""); for(int k=0;k<n;++k) { if(!k)printf("%2d:|",i); if(i==p.x&&k==p.y) { printf(" "); printf("