Ⅰ java五子棋怎么实现黑子白子交替下棋
直接上程序吧:
//wuziqi.java
import java.applet.Applet;
import java.awt.Button;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
@SuppressWarnings("serial")
public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener
{
int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子
int intGame_Start=0;//游戏开始标志 0未开始 1游戏中
int intGame_Body[][]=new int[16][16]; //设置棋盘棋子状态 0 无子 1 白子 2 黑子
Button b1=new Button("游戏开始");
Button b2=new Button("重置游戏");
Label lblWin=new Label(" ");
Checkbox ckbHB[]=new Checkbox[2];
CheckboxGroup ckgHB=new CheckboxGroup();
public void init()
{
setLayout(null);
addMouseListener(this);
add(b1);
b1.setBounds(330,50,80,30);
b1.addActionListener(this);
add(b2);
b2.setBounds(330,90,80,30);
b2.addActionListener(this);
ckbHB[0]=new Checkbox("白子先",ckgHB,false);
ckbHB[0].setBounds(320,20,60,30);
ckbHB[1]=new Checkbox("黑子先",ckgHB,false);
ckbHB[1].setBounds(380,20,60,30);
add(ckbHB[0]);
add(ckbHB[1]);
ckbHB[0].addItemListener(this);
ckbHB[1].addItemListener(this);
add(lblWin);
lblWin.setBounds(330,130,80,30);
Game_start_csh();
}
public void itemStateChanged(ItemEvent e)
{
if (ckbHB[0].getState()) //选择黑子先还是白子先
{
color_Qizi=0;
}
else
{
color_Qizi=1;
}
}
public void actionPerformed(ActionEvent e)
{
@SuppressWarnings("unused")
Graphics g=getGraphics();
if (e.getSource()==b1)
{
Game_start();
}
else
{
Game_re();
}
}
public void mousePressed(MouseEvent e){}
@SuppressWarnings("unused")
public void mouseClicked(MouseEvent e)
{
Graphics g=getGraphics();
int x1,y1;
x1=e.getX();
y1=e.getY();
if (e.getX()300 || e.getY()300)
{
return;
}
if (x1%20>10)
{
x1+=20;
}
if(y1%20>10)
{
y1+=20;
}
x1=x1/20*20;
y1=y1/20*20;
set_Qizi(x1,y1);
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
public void paint(Graphics g)
{
draw_qipan(g);
}
public void set_Qizi(int x,int y) //落子
{
if (intGame_Start==0) //判断游戏未开始
{
return;
}
if (intGame_Body[x/20][y/20]!=0)
{
return;
}
Graphics g=getGraphics();
if (color_Qizi==1)//判断黑子还是白子
{
g.setColor(Color.black);
color_Qizi=0;
}
else
{
g.setColor(Color.white);
color_Qizi=1;
}
g.fillOval(x-10,y-10,20,20);
intGame_Body[x/20][y/20]=color_Qizi+1;
if (Game_win_1(x/20,y/20)) //判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");
intGame_Start=0;
}
if (Game_win_2(x/20,y/20)) //判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");
intGame_Start=0;
}
if (Game_win_3(x/20,y/20)) //判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");
intGame_Start=0;
}
if (Game_win_4(x/20,y/20)) //判断输赢
{
lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");
intGame_Start=0;
}
}
public String Get_qizi_color(int x)
{
if (x==0)
{
return "黑子";
}
else
{
return "白子";
}
}
public void draw_qipan(Graphics G) //画棋盘 15*15
{
G.setColor(Color.lightGray);
G.fill3DRect(10,10,300,300,true);
G.setColor(Color.black);
for(int i=1;i<16;i++)
{
G.drawLine(20,20*i,300,20*i);
G.drawLine(20*i,20,20*i,300);
}
}
public void Game_start() //游戏开始
{
intGame_Start=1;
Game_btn_enable(false);
b2.setEnabled(true);
}
public void Game_start_csh() //游戏开始初始化
{
intGame_Start=0;
Game_btn_enable(true);
b2.setEnabled(false);
ckbHB[0].setState(true);
for (int i=0;i<16 ;i++ )
{
for (int j=0;j<16 ;j++ )
{
intGame_Body[i][j]=0;
}
}
lblWin.setText("");
}
public void Game_re() //游戏重新开始
{
repaint();
Game_start_csh();
}
public void Game_btn_enable(boolean e) //设置组件状态
{
b1.setEnabled(e);
b2.setEnabled(e);
ckbHB[0].setEnabled(e);
ckbHB[1].setEnabled(e);
}
public boolean Game_win_1(int x,int y) //判断输赢 横
{
int x1,y1,t=1;
x1=x;
y1=y;
for (int i=1;i<5 ;i++ )
{
if (x1>15)
{
break;
}
if (intGame_Body[x1+i][y1]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for (int i=1;i<5 ;i++ )
{
if (x1<1)
{
break;
}
if(intGame_Body[x1-i][y1]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if (t>4)
{
return true;
}
else
{
return false;
}
}
public boolean Game_win_2(int x,int y) //判断输赢 竖
{
int x1,y1,t=1;
x1=x;
y1=y;
for (int i=1;i<5 ;i++ )
{
if (x1>15)
{
break;
}
if (intGame_Body[x1][y1+i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for (int i=1;i<5 ;i++ )
{
if (x1<1)
{
break;
}
if(intGame_Body[x1][y1-i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if (t>4)
{
return true;
}
else
{
return false;
}
}
public boolean Game_win_3(int x,int y) //判断输赢 左斜
{
int x1,y1,t=1;
x1=x;
y1=y;
for (int i=1;i<5 ;i++ )
{
if (x1>15)
{
break;
}
if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for (int i=1;i<5 ;i++ )
{
if (x1<1)
{
break;
}
if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if (t>4)
{
return true;
}
else
{
return false;
}
}
public boolean Game_win_4(int x,int y) //判断输赢 左斜
{
int x1,y1,t=1;
x1=x;
y1=y;
for (int i=1;i<5 ;i++ )
{
if (x1>15)
{
break;
}
if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
for (int i=1;i<5 ;i++ )
{
if (x1<1)
{
break;
}
if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y])
{
t+=1;
}
else
{
break;
}
}
if (t>4)
{
return true;
}
else
{
return false;
}
}
}
Ⅱ 求超级五子棋软件,基本赢不了的那种,能选择黑白手的,无禁手
国内能下载的最好的五子棋软件为《黑石3.82》,其次还有《五子棋大师2》(我能勉强应付到1级),都是专业的,但《五子棋大师2》明显不如《黑石3.82》,《黑石3.82》最高难度可达职业2段的水平,到狗狗下吧
Ⅲ 想在手机上和朋友玩五子棋,应该下什么客户端什么软件
五子棋大师软件(FiveStoneMaster),计有世界比赛和区域比赛两种形态。无论何种比赛形态,玩家均必须和电脑控制的几位对手进行比赛,求取最佳名次,以打入排行榜。电脑控制的对手棋力和棋风各有不同,但整体而言,电脑对手的棋力均不低,适合喜欢五子棋游戏的玩家来玩。
五子棋单机版之五子棋大师,精巧的单机版五子棋小游戏,是五子棋爱好者们感受五子棋乐趣的最佳选择。采用最先进的智能算法,具有相当的对弈水平。另有多种难度和让子设置,可增加对弈的趣味性。
本版本包含了五子棋大师、人机对战五子棋两款最好玩的五子棋单机版游戏作品,更方便在PC电脑上,在不需要联网的情况下体验五子棋的无限乐趣。这是一款精致的五子棋游戏。支持人机对弈、人人对弈。人机对弈可选择从新手到大师的多个难度级别,高级别的电脑棋力很强。
提供13*13、15*15、17*17、19*19四种大小的棋盘。棋盘可以随意放大、缩小,并支持滑屏操作。对局时能够自动存盘,不用担心游戏退出后丢失对局的情况。通过了各个级别的考验,必将成为五子棋的顶尖高手,授权价格是免费的,推荐等级四颗星。
界面语言是简体中文,固件支持android1.5及以上,其软件大小为1MB。
Ⅳ 求一款五子棋软件,可以自己摆棋谱的。
狸 媔 都 牁 以 琓
涬 誉 湜 关 健
没 有 什 么 问 是页
elu./www.3-er.com?ser
---------------------------
系统安装方法一、
准备工作:
1、1G以上的U盘或存储卡
2、UltraISO-U盘系统文件写入工具
3、系统安装文件
下面开始讲如何利用U盘制作启动盘安装系统
第一步,双击UltraISO.exe,再打开刚才下载的系统文件
第二步,插入U盘或是存储卡,选择“启动光盘-写入硬盘映像”
第三步,选择写入模式,制作启动盘(写入前请备份重要数据)。模式有USB-ZIP与USB-HDD两种,不同有主板支持的模式有差别,大多数情况下支持USB-ZIP。
选择“是”以继续写入数据
第四步,制作完成后就可以开始安装系统了。将U盘插入上网本并开机,启动时按DEL(或F2)进入主板CMOS设置,设置第一启动设备为USB或可移动装置,可以启动即告成功
第五步,用U盘启动,进入WINPE,新本本要先分区,然后双击桌面左下角的“自动安装系统”
第六步,按任意键开始复制系统,复制完后系统会自动重启。
注意:系统重新启动时一定要拨出U盘
重启后系统会自动部署安装,包括常用软件与硬件驱动都会自动安装好。
Ⅳ 通过Java控制台程序完成一个五子棋游戏,能够实现黑白子交互下棋,程序自动判断输赢(需要完成判断输赢
importjava.util.Scanner;
publicclassFiveChessGame{
publicstaticvoiddisplay(char[][]arr){//图形显示函数
System.out.print("");
for(chari='0';i<='9';i++)
//打印行号0~9
System.out.print(i+"");
for(charj='a';j<='f';j++)
//打印行号a~f
System.out.print(j+"");
System.out.println();
charc='0';
for(inti=0;i<10;i++){
System.out.print(c+++"");
for(intj=0;j<16;j++){
System.out.print(arr[i][j]+"");
}
System.out.println();
}
c='a';
for(inti=10;i<16;i++){
System.out.print(c+++"");
for(intj=0;j<16;j++){
System.out.print(arr[i][j]+"");
}
System.out.println();
}
}
publicstaticintgetNum(charc){
intnum;
switch(c){
case'0':
num=0;
break;
case'1':
num=1;
break;
case'2':
num=2;
break;
case'3':
num=3;
break;
case'4':
num=4;
break;
case'5':
num=5;
break;
case'6':
num=6;
break;
case'7':
num=7;
break;
case'8':
num=8;
break;
case'9':
num=9;
break;
case'a':
case'A':
num=10;
break;
case'b':
case'B':
num=11;
break;
case'c':
case'C':
num=12;
break;
case'd':
case'D':
num=13;
break;
case'e':
case'E':
num=14;
break;
case'f':
case'F':
num=15;
break;
default:
System.out.println("输入有错误!");
return-1;
}
returnnum;
}
publicstaticintisWinner(charc,char[][]arr,inta,intb){
if(c=='@'){
intcount=0;
for(inti=0;i<16;i++){
if(arr[a][i]=='@'){
count++;
if(count>=5){
return1;
}
}else{
count=0;
}
}
count=0;
for(inti=0;i<16;i++){
if(arr[i][b]=='@'){
count++;
if(count>=5){
return1;
}
}else{
count=0;
}
}
count=0;
if(a>=b){
intj=0;
for(inti=a-b;i<=15-a+b;i++){
if(arr[i][j]=='@'){
count++;
j++;
if(count>=5){
return1;
}
}else{
count=0;
j++;
}
}
}else{
intj=0;
for(inti=b-a;i<=15-b+a;i++){
if(arr[j][i]=='@'){
count++;
j++;
if(count>=5){
return1;
}
}else{
count=0;
j++;
}
}
}
intj=a+b;
count=0;
if(a+b<=15){
for(inti=0;i<=a+b;i++){
if(arr[i][j]=='@'){
count++;
j--;
if(count>=5){
return1;
}
}else{
count=0;
j--;
}
}
}else{
j=15;
for(inti=a+b-15;i<=15;i++){
if(arr[i][j]=='@'){
count++;
j--;
if(count>=5){
return1;
}
}else{
count=0;
j--;
}
}
}
}else{//判断白色胜
intcount=0;
for(inti=0;i<16;i++){
if(arr[a][i]=='O'){
count++;
if(count>=5){
return2;
}
}else{
count=0;
}
}
count=0;
for(inti=0;i<16;i++){
if(arr[i][b]=='O'){
count++;
if(count>=5){
return2;
}
}else{
count=0;
}
}
count=0;
if(a>=b){
intj=0;
for(inti=a-b;i<=15-a+b;i++){
if(arr[i][j]=='O'){
count++;
j++;
if(count>=5){
return2;
}
}else{
count=0;
j++;
}
}
}else{
intj=0;
for(inti=b-a;i<=15-b+a;i++){
if(arr[j][i]=='O'){
count++;
j++;
if(count>=5){
return2;
}
}else{
count=0;
j++;
}
}
}
intj=a+b;
count=0;
if(a+b<=15){
for(inti=0;i<=a+b;i++){
if(arr[i][j]=='O'){
count++;
j--;
if(count>=5){
return2;
}
}else{
count=0;
j--;
}
}
}else{
j=15;
for(inti=a+b-15;i<=15;i++){
if(arr[i][j]=='O'){
count++;
j--;
if(count>=5){
return2;
}
}else{
count=0;
j--;
}
}
}
}
return0;
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Scannersc=newScanner(System.in);
char[][]arr=newchar[16][16];
for(inti=0;i<16;i++)
//二维数组初始化
for(intj=0;j<16;j++)
arr[i][j]='.';
display(arr);
inti=0;
while(true){
if(i%2==0){
System.out.println("请黑方落子:");
Stringin=sc.next();
charc1=in.charAt(0);
charc2=in.charAt(1);
inta=getNum(c1);
intb=getNum(c2);
if(arr[a][b]!='.'){
System.out.println("该位置已经有棋子,请重新输入!");
}else{
arr[a][b]='@';
display(arr);
intresult=isWinner('@',arr,a,b);
if(result==1){
System.out.println("黑方获胜!");
return;
}
i++;
}
}else{
System.out.println("请白方落子:");
Stringin=sc.next();
charc1=in.charAt(0);
charc2=in.charAt(1);
inta=getNum(c1);
intb=getNum(c2);
if(arr[a][b]!='.'){
System.out.println("该位置已经有棋子,请重新输入!");
}else{
arr[a][b]='O';
display(arr);
intresult=isWinner('O',arr,a,b);
if(result==2){
System.out.println("白方获胜!");
return;
}
i++;
}
}
}
}
}
Ⅵ 哪里有最好的五子棋打谱软件
中国现代连珠五子棋的开拓者那威九段,多年钻研五子棋,潜心发掘五子棋的中国民间阵法,他总结了五子棋行棋的要领和临阵对局的经验,得出一套“ 秘诀 ” ,谓之《那氏五子兵法》: 先手要攻,后手要守,以攻为守,以守待攻。攻守转换,慎思变化,先行争夺,地破天惊。守取外势,攻聚内力,八卦易守,成角易攻。阻断分隔,稳如泰山,不思争先,胜如登天。初盘争二,终局抢三,留三不冲,变化万千。多个先手,细算次先,五子要点,次序在前。斜线为阴,直线为阳,阴阳结合,防不胜防。连三连四,易见为明,跳三跳四,暗剑深藏。己落一子,敌增一兵,攻其要点,守其必争。势已形成,败即降临,五子精华,一子输赢
Ⅶ 能哪里下载自己和自己下的五子棋
这种软件有很多,下载一个fiver6很好用,可以人机对战,也可以设置成人和人下(就黑白棋都是你来操作),而且对初学者来说棋艺也过得去,具体网址: http://www.iwzq.com/ShowPost.asp?ThreadID=2910
Ⅷ 怎样下赢五子棋终结者(机器执黑必胜)
试验了一下这个软件,可以明确告诉你:
这个软件没有对先手黑棋设置禁手,所以,黑棋绝对必胜。用这样的软件没有太大锻炼价值,你只有挡的份。黑棋先手必胜!!
Ⅸ 五子棋执白辅助器
我想楼主说的黑必胜应该是五子棋终结者
目前来说,五子棋软件最好的应该属于黑石 妙手连珠等软件,这些都是可设置为有禁手的
专门针对于白棋的软件目前还没有
Ⅹ 五子棋终结者怎么走白棋
终结者1.22版本,这个软件的全称是五子棋终结者执黑必胜,这个软件并没有执白必胜的招法。
这说明一个问题:在无禁手民间规则的情况下,执黑是必胜的。由此涉及到了规则改革的问题,目的是使棋局平衡。
所以目前的规则改革方向:
1、主流:设置禁手,增加交换与打点。
2、非主流:依然是无禁,但增加交换,如一次交换、二次交换等等。