控制台简单五子棋

  1 import java.util.Scanner;
  2
  3 //控制台简单五子棋
  4 public class wuziqi {
  5
  6     //二维数组作为棋盘
  7     private static char[][] board=new char[16][16];
  8     //已下棋子数目
  9     private static int cnt;
 10     //分别代表玩家1,2的棋子
 11     private static char[] qizi={‘#‘,‘@‘};
 12     //八方向搜索检测
 13     private static int[] dx={-1,0,-1,-1,1,1,0,1};
 14     private static int[] dy={0,-1,-1,1,-1,1,1,0};
 15
 16     //输入检测
 17     private static int CheckInput(int x,int y){
 18
 19         if(board[x][y]!=‘+‘)
 20             return 0;
 21         if(x<1||x>15||y<1||y>15)
 22             return 0;
 23         return 1;
 24     }
 25
 26         //边界检测
 27     private static int Check(int x,int y){
 28         if(x>15||x<1||y>15||y<1)
 29             return 0;
 30         return 1;
 31     }
 32     //检测玩家是否获胜,需要传入玩家编号,及当前落点坐标
 33     private static int CheckAns(int num,int x,int y){
 34         if(cnt==15*15)
 35             return 1;
 36         //横竖 左斜 右斜 四个方向判断是否有五个棋子连在一起
 37         for(int i=0;i<4;i++){
 38             int sum=1;
 39             int xx=x+dx[i];
 40             int yy=y+dy[i];
 41             while(board[xx][yy]==qizi[num]&&Check(xx,yy)==1){
 42                 sum++;
 43                 xx=xx+dx[i];
 44                 yy=yy+dy[i];
 45             }
 46             xx=x+dx[7-i];
 47             yy=y+dy[7-i];
 48             while(board[xx][yy]==qizi[num]&&Check(xx,yy)==1){
 49                 sum++;
 50                 xx=xx+dx[7-i];
 51                 yy=yy+dy[7-i];
 52             }
 53             if(sum>=5)
 54                 return 1;
 55         }
 56         return 0;
 57     }
 58
 59     //初始化
 60     private static void Init(){
 61         cnt=0;
 62         for(int i=1;i<=15;i++)
 63             for(int j=1;j<=15;j++)
 64                 board[i][j]=‘+‘;
 65     }
 66
 67     //输出棋盘
 68     private static void Print(){
 69         int i,j;
 70         for(i=1;i<=15;i++){
 71             for(j=1;j<=15;j++){
 72
 73                 System.out.print(board[i][j]);
 74             }
 75             System.out.println();
 76         }
 77     }
 78
 79     public static int run(){
 80
 81         int x,y;
 82         Init();
 83         //当前棋手编号,默认0号先下
 84         int num=0;
 85         while(true){
 86             Print();
 87             System.out.print(num+1+"号选手请输入您下棋的坐标,应以x y形式: ");
 88             Scanner sc =new Scanner(System.in);
 89             while(true){
 90                 x=sc.nextInt();
 91                 y=sc.nextInt();
 92                 if(CheckInput(x,y)==1)
 93                     break;
 94                 System.out.print("输入坐标不合法,请重新输入: ");
 95             }
 96             board[x][y]=qizi[num];
 97             if(CheckAns(num,x,y)==1){
 98                 return num+1;
 99             }
100             num=1-num;
101         }
102     }
103
104     public static void main(String[] args){
105
106         System.out.println("欢迎使用lkl的五子棋!");
107         int ans=run();
108         System.out.println("恭喜"+ans+"号选手获得最终的胜利");
109     }
110 }
时间: 2024-10-24 08:09:42

控制台简单五子棋的相关文章

控制台的简单五子棋

只实现了最基本的功能,玩家下棋和电脑随机下棋.缺乏输入检查,重复下棋检查,判断输赢,人工智能算法等等. 待完善. 1 import java.io.BufferedReader; 2 import java.io.InputStreamReader; 3 4 // GoBang(五子棋) 5 class GoBang { 6 // 二维数组来模拟一个棋盘 7 private String[][] board; 8 // 表示棋盘的长.宽度 9 private static int BOARD_S

简单五子棋,没有电脑AI

刚学了C#委托,做了个五子棋练习,把前台绘制和后台逻辑分开,前台绘制方法用委托传给后台逻辑. 界面好简单... 先看类图 控制类控制整个游戏的逻辑,包括调用棋盘类的属性初始化棋盘.初始化两个棋手.轮流落子.棋盘里有一个二维数组保存整个棋盘的落子情况,棋手里也有一个二维数组保存自己的落子情况.方向类是为了方便判断输赢的. 下面是代码:注释很详细就不说明了: 主要控制类: 1 using System; 2 using System.Collections.Generic; 3 using Syst

C 语言控制台实现五子棋项目

花了一天时间实现了控制台五子棋项目,把项目贴上来.也算是告一段落了. 为了进一步了解C语言编程,熟悉优秀的编码风格,提升编码能力,丰富项目经验.所以在编程初期选择了控制台小游戏<单机五子棋>作为项目进行编码. 本项目定位: 控制台小程序,作为熟悉一个完整的项目流程存在. 项目周期: 一星期. 实际时间: 一天.(2016年4月5日) 游戏功能: 首先实现能够让双人进行对战,最后得出胜负(结果).然后加入人机对战元素,也就是传统意义上一个人玩的单机游戏. 编码风格: C语言面向过程编程,变量名与

简单五子棋实现

一.定义一个对手Rival类 package com.itwang.gonbang; public class Rival { private String color;//颜色 private String nickName;//昵称 public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } public Stri

[收藏]C++简单五子棋

1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 5 const int X = 21; //棋盘行数 6 const int Y = 21; //棋盘列数 7 char p[X][Y]; //定义棋盘 8 int m = 0;//定义临时点,保存输入坐标 9 int n = 0; 10 11 void display() //输出棋盘 12 { 13 for (int i = 0; i < X

简单五子棋

#include<iostream> #include <vector> #include <windows.h> using namespace std; const int Max=19; ///该位置手否已被占用 bool PZ(vector<vector<int> > &aaa,int x,int y ); ///判断胜方 bool SF(vector<vector<int> > &aaa,int

C++的简单“五子棋”游戏,只是核心代码,资源代码未添加

ChessBoard.h 1 #ifndef __CHESS_BOARD_H__ 2 #define __CHESS_BOARD_H__ 3 4 #include "DataStruct.h" 5 6 #define COL_WIDTH 45 7 #define ROW_WIDTH 45 8 9 class CChessBoard : public CWnd 10 { 11 private: 12 CBitmap m_bitBlackChess, m_bitWhiteChess; 13

java程序--控制台五子棋

控制台五子棋,具体思路见代码注释. 代码如下: <span style="font-size:18px;">package test; import java.io.IOException; import java.util.Scanner; //控制台简单五子棋 public class GoBang { //二维数组作为棋盘 private static char[][] board=new char[16][16]; //已下棋子数目 private static i

Chrome 控制台console的用法

原文出处: ctriphire 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方.可能大家对console.log会有一定的了解,心里难免会想调试的时候用alert不就行了,干嘛还要用console.log这么一长串的字符串来替代alert输出信息呢,下面我就介绍一些调试的入门技巧,让你爱上console.log 先的简单介绍一下chrome的控制台,打开chr