求一个五子棋的java代码,要有图形话界面,可以打包直接运行的。

作者&投稿:姬侧 (若有异议请与网页底部的电邮联系)
java编写五子棋程序,不要图形界面的那种~

import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
public class ChessGame extends JFrame implements MouseListener{
private int blackcount=0;
private int whitecount=0;
private boolean flag=true;
private boolean whitewin;
private boolean blackwin;
private boolean flash=false;
public Timer time;
private ArrayListblacklist;
private ArrayListwhitelist;
public ChessGame(){

setSize(450,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
blacklist=new ArrayList();
whitelist=new ArrayList();
this.addMouseListener(this);

setVisible(true);

}



@Override

public void paint(Graphics g) {
if(flash==true){
super.paint(g);
}
flash=false;
g.setColor(Color.WHITE);
g.fillRect(0, 0, 420, 420);
g.setColor(Color.DARK_GRAY);
g.drawLine(5, 5, 420, 5);
g.drawLine(5, 5, 5, 420);
g.drawLine(420, 5, 420, 420);
g.drawLine(5, 420, 420, 420);
for(int i=1;i<=21;i++){
g.drawLine(5, 20*i, 420, 20*i);
g.drawLine(20*i, 5, 20*i, 420);
}


g.setColor(Color.BLACK);

for(int i=0;i<blacklist.size();i++){
g.fillOval(blacklist.get(i).getX()*20+12,blacklist.get(i).getY()*20+32, 16, 16);
}
g.setColor(Color.RED);

for(int i=0;i<whitelist.size();i++){
g.fillOval(whitelist.get(i).getX()*20+12,whitelist.get(i).getY()*20+32, 16, 16);
}
this.checkwin(blacklist, 0, 0, 0,0);
this.checkwin(whitelist, 0, 0, 0,1);
g.setColor(Color.black);
String str1 = "黑方胜利局数为:" + blackcount;
g.drawString(str1, 10, 450);
String str2 = "红方胜利局数为:" + whitecount;
g.drawString(str2, 150, 450);

}
public static void main(String[] args){
ChessGame snake=new ChessGame();

}
public boolean checkExist(mypoint a){
for(int i=0;i<whitelist.size();i++){
if(whitelist.get(i).getX()==a.getX()&&whitelist.get(i).getY()==a.getY()){
return true;
}
}
for(int i=0;i<blacklist.size();i++){
if(blacklist.get(i).getX()==a.getX()&&blacklist.get(i).getY()==a.getY()){
return true;
}
}
return false;
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
double x=e.getX();
double y=e.getY();

if(x>=5&&x=5&&y<=410){
double k=20;
x=x/k-1;
y=y/k-2;
int ax=(int) Math.round(x);
int ay=(int) Math.round(y);
if(checkExist(new mypoint(ax,ay))){
JOptionPane.showMessageDialog(null, "该位置已有棋子!");
repaint();
}else{
if(flag==true){
blacklist.add(new mypoint(ax,ay));
}
if(flag==false){
whitelist.add(new mypoint(ax,ay));
}
flag=!flag;

repaint();
}
}
}
public void checkwin(ArrayList list,int pos,int direct,int count,int type){
if(count==0){
for(int i=0;i<list.size();i++){
for(int j=0;j<list.size();j++){

if(list.get(i).getY()==list.get(j).getY()&&(list.get(j).getX()-list.get(i).getX()==-1)){
direct=2;
count++;
checkwin(list,j,2,count,type);
count=0;
}

if(list.get(i).getX()==list.get(j).getX()&&(list.get(j).getY()-list.get(i).getY()==-1)){
direct=0;
count++;
checkwin(list,j,0,count,type);
count=0;
}
if(list.get(j).getY()==list.get(i).getY()-1&&(list.get(j).getX()-list.get(i).getX()==1)){
direct=4;
count++;
checkwin(list,j,4,count,type);
count=0;
}
if(list.get(j).getY()==list.get(i).getY()+1&&(list.get(j).getX()-list.get(i).getX()==1)){
direct=5;
count++;

checkwin(list,j,5,count,type);
count=0;
}

}
}

}


else{
if(direct==4){
for(int i=0;i<list.size();i++){
if(i!=pos){
if(list.get(i).getX()==list.get(pos).getX()+1&&(list.get(i).getY()-list.get(pos).getY()==-1)){

count=count+1;
if(count==4){
if(type==0){
System.out.println("blackwin!");
blackcount++;
JOptionPane.showMessageDialog(null, "黑方赢了!");
restart();
}if(type==1){
System.out.println("whitewin!");
whitecount++;
JOptionPane.showMessageDialog(null, "红方赢了!");
restart();
}
}else{
checkwin(list,i,direct,count,type);
}
}
}
}
}
if(direct==5){
for(int i=0;i<list.size();i++){
if(i!=pos){
if(list.get(i).getX()==list.get(pos).getX()+1&&(list.get(i).getY()-list.get(pos).getY()==1)){

count=count+1;
if(count==4){
if(type==0){
System.out.println("blackwin!");
blackcount++;
JOptionPane.showMessageDialog(null, "黑方赢了!");
restart();
}if(type==1){
System.out.println("whitewin!");
whitecount++;
JOptionPane.showMessageDialog(null, "红方赢了!");
restart();
}
}else{
checkwin(list,i,direct,count,type);
}
}
}
}
}

if(direct==0){
for(int i=0;i<list.size();i++){
if(i!=pos){
if(list.get(pos).getX()==list.get(i).getX()&&(list.get(i).getY()-list.get(pos).getY()==-1)){

count=count+1;
if(count==4){
if(type==0){
System.out.println("blackwin!");
blackcount++;
JOptionPane.showMessageDialog(null, "黑方赢了!");
restart();
}if(type==1){
System.out.println("whitewin!");
whitecount++;
JOptionPane.showMessageDialog(null, "红方赢了!");
restart();
}
}else{
checkwin(list,i,direct,count,type);
}
}
}
}
}

if(direct==2){
for(int i=0;i<list.size();i++){
if(i!=pos){
if(list.get(pos).getY()==list.get(i).getY()&&(list.get(i).getX()-list.get(pos).getX()==-1)){

count=count+1;
if(count==4){
if(type==0){
System.out.println("blackwin!");
blackcount++;
JOptionPane.showMessageDialog(null, "黑方赢了!");
restart();
}if(type==1){
System.out.println("whitewin!");
whitecount++;
JOptionPane.showMessageDialog(null, "红方赢了!");
restart();
}
}else{
checkwin(list,i,direct,count,type);
}
}
}
}
}


}

}



public void restart(){
whitelist=new ArrayList();
blacklist=new ArrayList();
flash=true;
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}
}
class mypoint{
int x;
int y;
public mypoint(int a,int b){
this.x=a;
this.y=b;
}
public int getX(){
return this.x;
}
public int getY(){
return this.y;
}
}

五子棋源码不要太多,估计能找到很多。输入坐标你是为了socket编程?作业的话糊弄下老师就得了,随便找个能运行的代码,自己把代码注释好了多温习即便就过了。java swing那玩意我估计就业也没几个人能用到。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class mypanel extends Panel implements MouseListener
{
int chess[][] = new int[11][11];
boolean Is_Black_True;
mypanel()
{
Is_Black_True = true;
for(int i = 0;i < 11;i++)
{
for(int j = 0;j < 11;j++)
{
chess[i][j] = 0;
}
}
addMouseListener(this);
setBackground(Color.BLUE);
setBounds(0, 0, 360, 360);
setVisible(true);
}
public void mousePressed(MouseEvent e)
{
int x = e.getX();
int y = e.getY();

if(x < 25 || x > 330 + 25 ||y < 25 || y > 330+25)
{
return;
}
if(chess[x/30-1][y/30-1] != 0)
{
return;
}
if(Is_Black_True == true)
{
chess[x/30-1][y/30-1] = 1;
Is_Black_True = false;
repaint();
Justisewiner();
return;
}
if(Is_Black_True == false)
{
chess[x/30-1][y/30-1] = 2;
Is_Black_True = true;
repaint();
Justisewiner();
return;
}
}
void Drawline(Graphics g)
{
for(int i = 30;i <= 330;i += 30)
{
for(int j = 30;j <= 330; j+= 30)
{
g.setColor(Color.WHITE);
g.drawLine(i, j, i, 330);
}
}

for(int j = 30;j <= 330;j += 30)
{
g.setColor(Color.WHITE);
g.drawLine(30, j, 330, j);
}

}
void Drawchess(Graphics g)
{
for(int i = 0;i < 11;i++)
{
for(int j = 0;j < 11;j++)
{
if(chess[i][j] == 1)
{
g.setColor(Color.BLACK);
g.fillOval((i + 1) * 30 - 8, (j + 1) * 30 - 8, 16, 16);
}
if(chess[i][j] == 2)
{
g.setColor(Color.WHITE);
g.fillOval((i + 1) * 30 - 8, (j + 1) * 30 - 8, 16, 16);
}
}
}
}
void Justisewiner()
{
int black_count = 0;
int white_count = 0;
int i = 0;

for(i = 0;i < 11;i++)//横向判断
{
for(int j = 0;j < 11;j++)
{
if(chess[i][j] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, "黑棋胜利");
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[i][j] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, "白棋胜利");
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}

for(i = 0;i < 11;i++)//竖向判断
{
for(int j = 0;j < 11;j++)
{
if(chess[j][i] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, "黑棋胜利");
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[j][i] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, "白棋胜利");
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}

for(i = 0;i < 7;i++)//左向右斜判断
{
for(int j = 0;j < 7;j++)
{
for(int k = 0;k < 5;k++)
{
if(chess[i + k][j + k] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, "黑棋胜利");
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[i + k][j + k] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, "白棋胜利");
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}
}

for(i = 4;i < 11;i++)//右向左斜判断
{
for(int j = 6;j >= 0;j--)
{
for(int k = 0;k < 5;k++)
{
if(chess[i - k][j + k] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, "黑棋胜利");
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[i - k][j + k] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, "白棋胜利");
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}
}

}
void Clear_Chess()
{
for(int i=0;i<11;i++)
{
for(int j=0;j<11;j++)
{
chess[i][j]=0;
}
}
repaint();
}
public void paint(Graphics g)
{
Drawline(g);
Drawchess(g);
}
public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){}

}

class myframe extends Frame implements WindowListener
{
mypanel panel;
myframe()
{
setLayout(null);
panel = new mypanel();
add(panel);
panel.setBounds(0,23, 360, 360);
setTitle("单人版五子棋");
setBounds(200, 200, 360, 383);
setVisible(true);
addWindowListener(this);

}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowDeactivated(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
}
public class mywindow
{
public static void main(String argc [])
{
myframe f = new myframe();
}
}

1楼正解

为什么不自己写

要可以联机的吗?如果要我这有。

sefg


飞利浦892如何把jav格式文件转入储存卡?
飞利浦892内置了两款游戏:五子棋和华容道!游戏显然走的是耐玩路线,画面和音效都极不起眼。另外,飞利浦892支持JAVA功能,而且安装步骤也相对简单,只需要将JAR文件下载到手机的JAVA文件夹单击,即可成功安装。JAVA安装只能在内存(硬伤),运行空间有限,大的JAVA程序不能安装!QQ\\MSN都可以安装!值得一提的...

江阴市15361222436: 求一个五子棋的java代码,要有图形话界面,可以打包直接运行的. -
绽禄复方: import java.awt.*;import java.awt.event.*;import javax.swing.*;class mypanel extends Panel implements MouseListener{ int chess[][] = new...

江阴市15361222436: 急求一个用Java写的五子棋游戏程序 -
绽禄复方: import java.awt.*; import java.awt.event.*; import java.awt.color.*; public class wuzi { public static void main(String[] args) { frame myFrame =new frame("五子棋"); } } class frame extends Frame implements ActionListener { MenuBar menubar; ...

江阴市15361222436: java编写五子棋程序
绽禄复方: import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.awt.Color;public class wu7ziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener {int color_Qizi=0;...

江阴市15361222436: 五子棋的程序怎么写,要Java的. -
绽禄复方: 一:19*19的棋盘二:能判断输赢三:最好是人机对战的如下部分程序:import java.awt.*;import java.awt.event.*;class wuziqi{public static void main(String args[]){new frame();}}class frame extends Frame{frame(){super("五子棋游戏");...

江阴市15361222436: 就是用java,用划线的方法画出一个14*14的五子棋盘,只用画格子就可以了 -
绽禄复方: 代码如下:package com.lijie.test; import java.awt.Graphics; import java.awt.Point; import javax.swing.JFrame; public class JFrameTestor extends JFrame { public JFrameTestor() { setSize(480, 320); setLocation(new Point(400, 150)); setVisible(...

江阴市15361222436: JAVA五子棋 -
绽禄复方: 你好!这里有段五子棋程序的代码,希望对你有帮助!//wuziqi.java import java.applet.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.awt.Color;public class wuziqi extends Applet implements ActionListener,...

江阴市15361222436: 多用户五子棋游戏 JAVA编程 -
绽禄复方: java网络五子棋 下面的源代码分为4个文件; chessClient.java:客户端主程序. chessInterface.java:客户端的界面. chessPad.java:棋盘的绘制. chessServer.java:服务器端. 可同时容纳50个人同时在线下棋,聊天. 没有加上详细注释,...

江阴市15361222436: java怎么编写五子棋? -
绽禄复方: 1、画棋盘定好格的大小,画线. 2,接受鼠标事件画棋子算算点在哪个交叉点上,画实心点,或者空心圈 3,表示进行状态的二维数组 4,根据二维数组的内容,判断输赢.挺好的,练练手.

江阴市15361222436: 老师让我做一个智能游戏 五子棋 哪位大哥给个源码(有说明) JAVA C++都好 -
绽禄复方: 其实这只是一个算法..只要你知道算法其他就简单多了. import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; class clientThread extends Thread { chessClient chessclient; clientThread(chessClient ...

江阴市15361222436: 求五子棋的JAVA代码,已写出部分,我应该如何保存输入过的坐标? -
绽禄复方: 棋盘是20X20的,你用String数组来表示的话,没有棋子的棋盘上的qipan[x]y[]的值为空,该地方有黑棋的时候qipan[X][y]='1',白棋的话qipan[X][Y]='2',你无需记录你下过的位置,只需画棋盘时候该位置的值,为空的话可以继续下棋子就可以了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网