import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
//游戏规则、主体
//
public class MainGame extends JPanel
{
private InfoSave infoSave;
private MyPanel mp;
private int tableNumber;
private String name;
private String sex;
private String way;
private String otherWay;
private String size = "1";
private BufferedImage whiteDisk;
private BufferedImage blackDisk;
private BufferedImage curBlack;
private BufferedImage curWhite;
private BufferedImage seatEmpty;
private BufferedImage maleSeatFull;
private BufferedImage femaleSeatFull;
private BufferedImage gameImage;
private BufferedImage ready;
private BufferedImage start;
private BufferedImage play;
private BufferedImage peace;
private BufferedImage lost;
private BufferedImage regret;
private PrintStream ps;
private Rectangle leftName = new Rectangle(13, 348, 66, 125);
private Rectangle rightName = new Rectangle(645, 348, 66, 125);
private Image board; //棋盘图片
private Image white; //白棋图片
private Image black; //黑棋图片
private Image selected;
private int posX;
private int posY;
private static int X;
private static int Y;
private int preX; //前一步的坐标
private int preY; //前一步的坐标
private int preSX; //前一步的移动坐标
private int preSY; //前一步的移动坐标
private int otherX; //对方的坐标
private int otherY; //对方的坐标
private int step; //步数
private int count; //count 是计数器,为5的时候表胜利
private int cursor; //光标标志
private int winCountL; //胜利次数
private int winCountR; //胜利次数
private boolean startOver = false;
private boolean peaceOver = false;
private boolean lostOver = false;
private boolean regretOver = false;
private final int CHESS_SIZE = 15; //CHESS_SIZE 是棋盘大小
private int[][] chess = new int[CHESS_SIZE][CHESS_SIZE]; //虚拟的,判断输赢
private int[][] select = new int[CHESS_SIZE][CHESS_SIZE];
private int[][] curChess = new int[CHESS_SIZE][CHESS_SIZE]; //实体的,坐标
private boolean playChess = false; //可否下棋
private boolean isBegin = false; //游戏开始了吗
private boolean isReady = false; //准备好了吗
private boolean isOtherReady = false; //对方准备好了吗
private Rectangle startButton = new Rectangle(334, 656 , 60 , 31);
private Rectangle peaceButton = new Rectangle(269, 653 , 42 , 35);
private Rectangle lostButton = new Rectangle(413, 659 , 45 , 18);
private Rectangle regretButton = new Rectangle(100,620,60,40);
private int sec = 0;
private int dSec = 0;
private int min = 0;
private int dMin = 1;
private int secR = 0;
private int dSecR = 0;
private int minR = 0;
private int dMinR = 1;
private Timer timerLeft;
private Timer timerRight;
public MainGame(InfoSave infoSave , String way , int tableNumber)
{
try
{
this.tableNumber = tableNumber;
this.infoSave = infoSave;
this.way = way;
mp = new MyPanel();
ps = new PrintStream(infoSave.getSocket().getOutputStream());
gameImage = ImageIO.read(new File("D:\\0\\fiveStone\\room2.bmp"));
ready = ImageIO.read(new File("D:\\0\\fiveStone\\ready.jpg"));
start = ImageIO.read(new File("D:\\0\\fiveStone\\start.jpg"));
play = ImageIO.read(new File("D:\\0\\fiveStone\\play.jpg"));
peace = ImageIO.read(new File("D:\\0\\fiveStone\\peace.jpg"));
regret = ImageIO.read(new File("D:\\0\\fiveStone\\regret.jpg"));
lost = ImageIO.read(new File("D:\\0\\fiveStone\\lost.jpg"));
whiteDisk = ImageIO.read(new File("D:\\0\\fiveStone\\whiteDisk.gif"));
blackDisk = ImageIO.read(new File("D:\\0\\fiveStone\\blackDisk.gif"));
curBlack = ImageIO.read(new File("D:\\0\\fiveStone\\curBlack.gif"));
curWhite = ImageIO.read(new File("D:\\0\\fiveStone\\curWhite.gif"));
maleSeatFull = ImageIO.read(new File("D:\\0\\fiveStone\\maleSeatFull.jpg"));
femaleSeatFull = ImageIO.read(new File("D:\\0\\fiveStone\\femaleSeatFull.jpg"));
seatEmpty = ImageIO.read(new File("D:\\0\\fiveStone\\seatEmpty.jpg"));
white = ImageIO.read(new File("D:\\0\\fiveStone\\white.gif"));
black = ImageIO.read(new File("D:\\0\\fiveStone\\black.gif"));
selected = ImageIO.read(new File("D:\\0\\fiveStone\\selected.gif"));
//用Dimension封装了一个构件的高度和宽度
this.setMinimumSize(new Dimension(723 , 702));
this.setPreferredSize(new Dimension(gameImage.getWidth(null), gameImage.getHeight(null)));
mp.setPreferredSize(new Dimension(gameImage.getWidth(null), gameImage.getHeight(null)));
this.add(mp);
timer();
playChess();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/*
向右横扫描4格,判断是否有5个相连的棋
*/
private void acrossScan(int i , int j)
{
//如果遇到有棋的地方就开始扫描
if (chess[i][j] == 1 || chess[i][j] == 2)
{
if ((j+4) < chess[i].length) //判断棋的右方是否足够有4个连续位置
{
count = 1;
for (int k=1;k<=4 ;k++ )
{
if (chess[i][j+k] == chess[i][j])
{
count++; //如果相连的地方有相同的棋就做标记
}
else count = 0;
}
}
}
}
/*
向下竖扫描4格,判断是否有5个相连的棋
*/
private void erectScan(int i , int j)
{
//如果遇到有棋的地方就开始扫描
if (chess[i][j] == 1 || chess[i][j] == 2)
{
if ((i+4) < chess.length) //判断棋的下方是否足够有4个连续位置
{
count = 1;
for (int k=1;k<=4 ;k++ )
{
if (chess[i+k][j] == chess[i][j])
{
count++; //如果相连的地方有相同的棋就做标记
}
else count = 0;
}
}
}
}
/*
向右上横扫描4格,判断是否有5个相连的棋
*/
private void topRightScan(int i , int j)
{
//如果遇到有棋的地方就开始扫描
if (chess[i][j] == 1 || chess[i][j] == 2)
{
if ((i-4) >= 0 && (j+4) < chess[i].length) //判断棋的右斜上方是否足够有4个连续位置
{
count = 1;
for (int k=1;k<=4 ;k++ )
{
if (chess[i-k][j+k] == chess[i][j])
{
count++; //如果相连的地方有相同的棋就做标记
}
else count = 0;
}
}
}
}
/*
向右下横扫描4格,判断是否有5个相连的棋
*/
private void belowRightScan(int i , int j)
{
//如果遇到有棋的地方就开始扫描
if (chess[i][j] == 1 || chess[i][j] == 2)
{
if ((i+4) < chess.length && (j+4) < chess[i].length) //判断棋的右斜下方是否足够有4个连续位置
{
count = 1;
for (int k=1;k<=4 ;k++ )
{
if (chess[i+k][j+k] == chess[i][j])
{
count++; //如果相连的地方有相同的棋就做标记
}
else count = 0;
}
}
}
}
//逐一调用4种扫描方法判断胜负
public void win()
{
for (int i = 0; i < chess.length ; i++ )
{
for (int j = 0 ; j < chess[i].length ; j++ )
{
acrossScan(i,j);
if (count!=5)
{
erectScan(i,j);
}
if (count!=5)
{
topRightScan(i,j);
}
if (count!=5)
{
belowRightScan(i,j);
}
if (count==5)
{
count=0;
//判断是黑棋还是白棋赢
if (chess[i][j] == 1)
{
timerLeft.stop();
timerRight.stop();
JOptionPane.showMessageDialog(mp , "黑棋胜利!!" , "胜利" ,
JOptionPane.INFORMATION_MESSAGE);
winCountL++;
}
else if (chess[i][j] == 2)
{
timerLeft.stop();
timerRight.stop();
JOptionPane.showMessageDialog(mp , "白棋胜利!!" , "胜利" ,
JOptionPane.INFORMATION_MESSAGE);
winCountR++;
}
try
{
没有合适的资源?快使用搜索试试~ 我知道了~
使用java代码完成一个联机版五子棋applet游戏.zip
共90个文件
jpg:55个
gif:15个
java:15个
需积分: 1 0 下载量 69 浏览量
2024-11-26
21:18:06
上传
评论
收藏 955KB ZIP 举报
温馨提示
使用java代码完成一个联机版五子棋applet游戏.zip图像
资源推荐
资源详情
资源评论
收起资源包目录
使用java代码完成一个联机版五子棋applet游戏.zip (90个子文件)
projectcode1124
selectTable.gif 690B
he.jpg 122KB
headerFrame.bmp 289KB
whiteDisk.gif 2KB
blackDisk.gif 2KB
2.jpg 1KB
ChatSystem.java 8KB
27.jpg 1KB
MyProtocol.java 1KB
10.jpg 883B
maleSeatFull.jpg 5KB
28.jpg 1KB
ClientThread.java 8KB
fiveStoneBoard.jpg 34KB
Mqshow.gif 8KB
25.jpg 1000B
LoginDialog.java 6KB
over.jpg 1KB
Client.java 2KB
13.jpg 1KB
femaleSeatFull.jpg 6KB
ServerThread.java 17KB
tableEmpty.jpg 1006B
login.jpg 11KB
vmware.gif 1KB
14.jpg 931B
30.jpg 928B
6.jpg 952B
22.jpg 1KB
15.jpg 1KB
cb2e20f0f325903ffc077dd5e1a3351.png 43KB
16.jpg 1KB
HostGame.java 3KB
play.jpg 124KB
ie.gif 1KB
1.jpg 1KB
HeadPanel.java 3KB
seatEmpty.jpg 2KB
Fqshow.gif 8KB
start.jpg 126KB
17.jpg 1KB
21.jpg 1KB
headerFrame.jpg 17KB
selectedHead.gif 111B
xnview.gif 1KB
headerFrame1.bmp 289KB
23.jpg 1KB
26.jpg 1KB
12.jpg 1KB
selected.gif 132B
5.jpg 923B
lost.jpg 121KB
black.gif 1KB
female.jpg 23KB
emule_01.gif 1KB
InfoSave.java 3KB
HallPanel.java 9KB
MyMap.java 520B
curWhite.gif 999B
MainGame.java 25KB
room2.bmp 1.45MB
8.jpg 951B
GameHall.java 1KB
24.jpg 1KB
20.jpg 1KB
18.jpg 1KB
ready.jpg 120KB
11.jpg 918B
29.jpg 1KB
regret2.jpg 41KB
curBlack.gif 1KB
player.jpg 2KB
tableFull.jpg 1KB
room.bmp 1.45MB
19.jpg 1KB
Server.java 931B
stop.jpg 1KB
male.jpg 23KB
regret.jpg 53KB
3.jpg 1KB
Person.java 1KB
peace.jpg 124KB
7.jpg 938B
room.jpg 61KB
table.jpg 1KB
peace and lost.jpg 121KB
white.gif 1012B
9.jpg 966B
normal.jpg 121KB
4.jpg 1KB
共 90 条
- 1
资源评论
龙年行大运
- 粉丝: 1273
- 资源: 3934
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 DirectX 11 的延迟 PBR 渲染引擎.zip
- 程序设计基础1-8章-PPT.zip
- 适用于 delphi 的 DirectX GUI 框架 .zip
- 适用于 Delphi 和 Windows 的 3D 图形和游戏引擎 .zip
- 适用于 Blender 2.8+ 的 DirectX 模型导出器.zip
- 适用于 AMD GPU PerfStudio 工具的 DirectX 12 插件.zip
- 这是适用于 Windows 的一款小型截图工具,可以截取并保存 DirectX 游戏和其他应用程序的截图 还可以显示 FPS 和时间 .zip
- 话费提单系统,大猿人4.2支持余额查询,仅供学习,请勿商用
- 这是我的基于 DirectX 的 2D 游戏引擎 .zip
- Quartus开发的FPGA工程-ADC/DAC/频率计/外部触发
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功