Ⅰ 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、非主流:依然是無禁,但增加交換,如一次交換、二次交換等等。