五子棋java,五子棋Java課程報告

本文目錄一覽:

JAVA五子棋中如何實現重新開始和悔棋的功能

一般來說是不應該像你這樣寫的,應該是把要畫的步驟寫在組件的被覆寫的paintComponent函數里,然後在你響應事件的函數里直接掉用該組件的repaint()函數即可。repaint函數是會去掉該組件的paintComponent()函數的。至於你這麼寫為啥不行,這個我也不清楚,據我猜測,repaint函數要做的事情是刷新組件,並且重新去畫一遍,不過這個步驟不一定是立即完成,可能有延遲。總之在你畫那些棋子之後,它又幹了一些事情,導致你畫的棋子沒了(但這不會影響到它自己想去畫的東西,即paintComponent()函數里的東西),另外不要忘了,覆寫paintComponent時,第一行要寫,super.paintComponent(g),這是去畫它原來有的東西(比如加上去的按鈕,文本框之類的東西)

例如下面:

12345678910111213141516171819202122232425262728293031323334353637class PanelM extends JPanel{ ImageIcon icon = new ImageIcon(“app.gif”); JLabel jl = new JLabel(icon, SwingConstants.CENTER); int x, y; private ListInteger listX = new ArrayListInteger(); private ListInteger listY = new ArrayListInteger(); public PanelM() { add(jl); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent m) { x = m.getX(); y = m.getY(); listX.add(x); listY.add(y); repaint(); } }); } public void paintComponent(Graphics g) { super.paintComponent(g); for (int i = 0; i listX.size(); i++) { g.fillOval(listX.get(i), listY.get(i), 20, 20); } }}

java五子棋怎麼畫ER圖

先畫正方形,然後畫兩條對摺線完成。

第一步、我們先來畫一畫五子棋的棋盤,畫出一個棋盤,畫一個四方形。

第二步、接著我們畫一畫棋盤的棋盤格,橫橫豎豎的橫要平,豎要直溜溜。

第三步、接著我們畫出棋盤裡面的棋子,黑色和白色的棋子就完成啦。

想用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()20 || e.getX()300 || e.getY()20 || e.getY()300)

{

return;

}

if (x1%2010)

{

x1+=20;

}

if(y1%2010)

{

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;i16;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;i16 ;i++ )

{

for (int j=0;j16 ;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;i5 ;i++ )

{

if (x115)

{

break;

}

if (intGame_Body[x1+i][y1]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i5 ;i++ )

{

if (x11)

{

break;

}

if(intGame_Body[x1-i][y1]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t4)

{

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;i5 ;i++ )

{

if (x115)

{

break;

}

if (intGame_Body[x1][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i5 ;i++ )

{

if (x11)

{

break;

}

if(intGame_Body[x1][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t4)

{

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;i5 ;i++ )

{

if (x115)

{

break;

}

if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i5 ;i++ )

{

if (x11)

{

break;

}

if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t4)

{

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;i5 ;i++ )

{

if (x115)

{

break;

}

if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

for (int i=1;i5 ;i++ )

{

if (x11)

{

break;

}

if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y])

{

t+=1;

}

else

{

break;

}

}

if (t4)

{

return true;

}

else

{

return false;

}

}

}

原創文章,作者:OYLWT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329761.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OYLWT的頭像OYLWT
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:55

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論