zoukankan      html  css  js  c++  java
  • C语言小程序,三子棋

    #include<stdio.h>
    #include <math.h>
    void printPan(char arr[][3]){
    	int i=0;
    	printf(" ——————
    ");
    	printf("| %c | %c | %c |
    ",arr[0][0],arr[0][1],arr[0][2]);
    	printf("  —————
    ");
    	printf("| %c | %c | %c |
    ",arr[1][0],arr[1][1],arr[1][2]);
    	printf("  —————
    ");
    	printf("| %c | %c | %c |
    ",arr[2][0],arr[2][1],arr[2][2]);
    	printf(" ——————
    ");
    
    }
    
    int userPut(char arr[][3],int x,int y){
    	if(arr[x-1][y-1]==' '){
    		arr[x-1][y-1]='X';
    	return 0;
    	}
    //	printf("该位置已有棋子,请重新输入!
    ");
    	return 1;
    }
    
    void pcPut(char arr[][3]){
    	int x=rand()%3;
    	int y=rand()%3;
    	while(arr[x][y]!=' ')
    	{
    	x=rand()%3;
    	y=rand()%3;
    	}
    	arr[x][y]='0';
    	printPan(arr);
    }
    
    int ifVictor(char arr[][3]){
    	int i=0,j=0;
    	for(i=0;i<3;i++){
    		if((arr[i][0]=='X')){
    			if(((arr[i][0]==arr[i][1])&&(arr[i][0]==arr[i][2]))){  //行相等 
    			printf("恭喜您胜利了!
    ");
    			return 1; 
    			}
    		}
    		if(arr[0][i]=='X'){
    			if((arr[0][i]==arr[1][i])&&(arr[0][i]==arr[2][i])){		//列相等 
    			printf("恭喜您胜利了!
    ");
    			return 1; 				
    			}
    		}
    	
    		if(arr[i][0]=='0'){
    			if((arr[i][0]==arr[i][1])&&(arr[i][0]==arr[i][2])){		//行相等 
    			printf("很遗憾,你输了!
    ");
    			return -1; 
    			}
    		}
    		if(arr[0][i]=='0'){
    			if((arr[0][i]==arr[1][i])&&(arr[0][i]==arr[2][i])){		//列相等 
    			printf("很遗憾,你输了!
    ");
    			return -1; 	
    			}
    		}		
    	}
    	
    	
    	if((arr[0][0]=='X'||arr[0][0]=='0')&&((arr[0][0]==arr[1][1])&&(arr[0][0]==arr[2][2]))){
    		if(arr[0][0]=='X'){
    			printf("恭喜您胜利了!
    ");
    			return 1;
    		}
    		if(arr[0][0]=='0'){
    			printf("很遗憾,你输了!
    ");
    			return -1; 
    		}
    	}
    	if((arr[0][2]=='X'||arr[0][2]=='0')&&((arr[0][2]==arr[1][1])&&(arr[0][2]==arr[2][0]))){
    		if(arr[0][2]=='X'){
    			printf("恭喜您胜利了!
    ");
    			return 1;
    		}
    		if(arr[0][2]=='0'){
    			printf("很遗憾,你输了!
    ");
    			return -1; 
    		}
    	}	
    	return 0; 
    }
    
    int is_kon(char arr[][3]){
    	int i=0,j=0,n=0;
    	for(i=0;i<3;i++){
    		for(j=0;j<3;j++){
    			if(arr[i][j]==' '){
    				return 0;
    			}
    		}	
    	}
    	return 1;
    }
    
    void clr_arr(char arr[][3]){
    	int i=0,j=0;
    	for(i=0;i<3;i++){
    		for(j=0;j<3;j++){
    			arr[i][j]=' ';
    		}
    	}
    }
    
    int main(){
    	char arr[3][3]={' ',' ',' ',' ',' ',' ',' ',' ',' '};
    	int x=0,y=0;
    	system("color fd"); 
    	printf("三子棋游戏
    游戏说明:连续三个一样的即胜利!输入坐标,坐标用空格隔开,然后回车;例如:  2 2
    按回车开始游戏
    ");
    	getchar();
    	while(1){
    		clr_arr(arr);
    		while(1){
    			system("cls");
    			printPan(arr);
    			printf("请输入位置:"); 
    			scanf("%d %d",&x,&y);
    			if(userPut(arr,x,y)){
    				continue;
    			}
    			if(ifVictor(arr)!=0){
    				system("pause"); 
    				break;
    			}
    			if(is_kon(arr)==1){
    				printf("平局!
    "); 
    				system("pause"); 
    				break;
    			}
    			pcPut(arr);
    			
    			if(ifVictor(arr)!=0){
    				system("pause"); 
    				break;
    			}
    		}
    		printf("还要继续吗?(按回车继续,'#'结束)
    ");
    		fflush(stdin);
    		if(getchar()=='#'){
    			break;
    		} 
    	}
    	printf("游戏结束!
    ");
    	system("pause"); 
    	return 0;
    }





  • 相关阅读:
    利用vuex 做个简单的前端缓存
    EFcore 解决 SQLite 没有datetime 类型的问题
    dotnet 清理 nuget 缓存
    .net 5 单文件模式发布异常 CodeBase is not supported on assemblies loaded from a single-file bundle
    ubuntu 开启ip转发的方法
    Vue-ECharts 6 迁移记录
    System.Text.Json 5.0 已增加支持将Enum 由默认 Number类型 转换为String JsonStringEnumConverter
    Windows 10 LTSC 2019 正式版轻松激活教程
    Mac 提示Permission denied
    苹果手机代理 charles 提示(此链接非私人连接)
  • 原文地址:https://www.cnblogs.com/yongtaochang/p/13615381.html
Copyright © 2011-2022 走看看