第一个自创
  • 板块灌水区
  • 楼主zyen11451425
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/27 23:30
  • 上次更新2024/8/28 10:21:45
查看原帖
第一个自创
1041623
zyen11451425楼主2024/8/27 23:30

井字棋1.0

(水作勿喷)

哪位大佬能帮我解决旧胜率数据和新数据之间的冲突

重新打开后更新不了,还得手删qwq

#include<bits/stdc++.h>
#include <iostream>
#include <string>
#include <windows.h>
#include <conio.h>
#include <fstream>
#include <ctime>
#include <time.h>
#include <stdio.h>
using namespace std;
int p1,p2;
int jzqall,jzqp1win,jzqp2win,jzqpj;
char cp[3],yx[20]={" !@#$%^&*?"};
char a[5][5]={" 123","1   ","2   ","3   "};
void zhujiemian();
void baocun();
bool win(char cwj){
	for(int i=1;i<=3;i++){
		if((a[i][1]==a[i][2]&&a[i][3]==a[i][1]&&a[i][1]!=' ')||(a[1][i]==a[2][i]&&a[3][i]==a[1][i]&&a[1][i]!=' '))return 1;
	}
	if((a[1][1]==a[2][2]&&a[3][3]==a[1][1]&&a[1][1]!=' ')||(a[3][1]==a[2][2]&&a[1][3]==a[3][1]&&a[2][2]!=' '))return 1;
	return 0;
}
void jzqcin(int c){
	printf("第%d步\n",c);
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){
			printf("%c ",a[i][j]);
		}
		printf("\n");
	}
	int wj=c%2;
	if(!wj)wj=2;
	char cwj=cp[wj];
	printf("p%d玩家落子\n",wj);
	printf("请输入要下的坐标\n");
	int x,y;
	while(1){
		scanf("%d%d",&x,&y);
		if(a[x][y]!=' '||x>3||y>3){
			printf("你不能进行此操作!\n");
			printf("请输入要下的坐标\n");
		}else{
			a[x][y]=cwj;
			break;
		}
	}
	system("cls");
	if(win(cwj)){
		printf("p%d玩家胜利!\n",wj);
		if(wj==1)jzqp1win++;
		else jzqp2win++;
		for(int i=1;i<=3;i++){
			for(int j=1;j<=3;j++){
				a[i][j]=' ';
			}
		}
		Sleep(1000);
		baocun();
		zhujiemian();
		return;
	}
	if(c==9){
		printf("平局!\n");
		jzqpj++;
		for(int i=1;i<=3;i++){
			for(int j=1;j<=3;j++){
				a[i][j]=' ';
			}
		}
		Sleep(1000);
		baocun();
		zhujiemian();
		return;
	}
	jzqcin(c+1);
}
void startj(int c){
	system("cls");
	printf("请p1玩家选择你的英雄\n");
	printf("! @ # $ % ^ & * ?\n");
	printf("1 2 3 4 5 6 7 8 9\n");
	printf("(输入序号)\n");
	while(1){
    	scanf("%d",&p1);
    	if(p1>9)printf("无此英雄!请重新选择\n");
    	else break;
	}
	system("cls");
	cp[1]=yx[p1];
	printf("请p2玩家选择你的英雄\n");
	printf("! @ # $ % ^ & * ?\n");
	printf("1 2 3 4 5 6 7 8 9\n");
	printf("(输入序号)\n");
    while(1){
    	scanf("%d",&p2);
    	if(p2>9)printf("无此英雄!请重新选择\n");
    	else break;
	}
	system("cls");
	cp[2]=yx[p2];
	printf("启动!\n");
	jzqall++;
	if(c==1)jzqcin(1);
	system("cls");
}
void shezhi(){
	system("cls");
	printf("设置面板\n");
	printf("井字棋总局数:%d\n",jzqall);
	printf("p1玩家胜场:%d局\n",jzqp1win);
	printf("p2玩家胜场:%d局\n",jzqp2win);
	printf("平局:%d局\n",jzqpj);
	printf("1.退出\n");
	int c;
	while(scanf("%d",&c)){
		if(c==1){
			zhujiemian();
			break;
		}
	}
}
void baocun(){
	ofstream outfile("dataqi.txt", ios::binary | ios::app | ios::in | ios::out);
	outfile<<jzqall<<" "<<jzqp1win<<" "<<jzqp2win<<" "<<jzqpj<<endl;
	outfile.close();
}
void zhujiemian(){
	system("cls");
	printf("1.井字棋 2.五子棋 3.设置 4.退出游戏\n");
	int c;
	scanf("%d",&c);
	if(c==1){
		startj(c);
	}else if(c==3){
		shezhi();
	}else if(c==2){
		printf("暂未开放!\n");
		Sleep(1000);
		zhujiemian();
	}else{
		return;
	}
}
int main(){
	ifstream fin("dataqi.txt");
	fin>>jzqall>>jzqp1win>>jzqp2win>>jzqpj;
	zhujiemian();
	printf("感谢游玩!");
	return 0;
}
2024/8/27 23:30
加载中...