import java.util.Random;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Cursor;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.image.BufferedImage;
import java.awt.Rectangle;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.Timer;
import java.io.File;
import java.io.IOException;
class GameRoom extends JFrame {
private final int ANIMAL_WIDTH = 48; //动物图片的宽度
private final int ANIMAL_HEIGHT = 48; //动物图片的高度
private final int ANIMAL_NUM = 7; //动物数量
private final int DDP_MATRIX_ROW = 8;
private final int DDP_MATRIX_COL = 8;
private final int EMPTY = 7; //对对碰矩阵值空时的标记
private boolean isThreeLinked; //标记是否有三个以上的连接
//标记单击次数
private boolean isDoubleClicked;
private int x1; //记录第一次被点击的X坐标
private int y1; //记录第一次被点击的Y坐标
private BufferedImage roomBackground; //房间的图片背景
//随机数
private Random rand = new Random();
//动物数组
private int[][] animal =
new int[DDP_MATRIX_ROW][DDP_MATRIX_COL];
private BufferedImage pool;
private BufferedImage[] animalImage = new BufferedImage[ANIMAL_NUM];
private RoomPanel roomPanel = new RoomPanel();//游戏区面板
JTextField textarea1 = new JTextField(10); //显示分数
JTextField textarea2 = new JTextField(10); //显示剩余时间
private int grade = 0; //得分
private Timer timer; //定时器
//消除三个以上连接的点
private void removeLinked(int x, int y) {
if(animal[x][y] == EMPTY)return;
int n=0;
int tmp;
int linked = 1;
if (x + 1 < 8) {
tmp = x + 1;
while (tmp < 8 && animal[x][y] == animal[tmp][y]) {
linked++;
tmp++;
}
}
if (x - 1 >= 0) {
tmp = x - 1;
while (tmp >= 0 && animal[x][y] == animal[tmp][y]) {
linked++;
tmp--;
}
}
if (linked >= 3) {
n=n+linked;
tmp = x + 1;
while (tmp < 8 && animal[tmp][y] == animal[x][y]) {
animal[tmp][y] = EMPTY;
tmp++;
}
tmp = x - 1;
while (tmp >= 0 && animal[tmp][y] == animal[x][y]) {
animal[tmp][y] = EMPTY;
tmp--;
}
// 当前交换过来的点
animal[x][y] = EMPTY;
}
tmp = 0;
linked = 1;
if (y + 1 < 8) {
tmp = y + 1;
while (tmp < 8 && animal[x][y] == animal[x][tmp]) {
linked++;
tmp++;
}
}
if (y - 1 >= 0) {
tmp = y - 1;
while (tmp >= 0 && animal[x][y] == animal[x][tmp]) {
linked++;
tmp--;
}
}
if (linked >= 3) {
n=n+linked;
tmp = y + 1;
while (tmp < 8 && animal[x][y] == animal[x][tmp]) {
animal[x][tmp] = EMPTY;
tmp++;
}
tmp = y - 1;
while (tmp >= 0 && animal[x][y] == animal[x][tmp]) {
animal[x][tmp] = EMPTY;
tmp--;
}
// 当前交换过来的点
animal[x][y] = EMPTY;
}
grade+=n*10;
textarea1.setText(Integer.toString(grade));
System.out.println(grade + " ======"+x+" "+y);
}
/*功能:全局扫描三个相连相同的点
*@param: flag flag为1时:只判断是否有三个相连的点
* flag为2时:删除三个相连的点
*/
private boolean globalSearch(int flag) {//**
if (1 == flag) {
for (int i = 0; i < DDP_MATRIX_ROW; i++) {
for (int j = 0; j < DDP_MATRIX_COL; j++) {
if (isThreeLinked(i, j)) {
return true;
}
}
}
} else if (2 == flag) {
for (int i = 0; i < DDP_MATRIX_ROW; i++) {
for (int j = 0; j < DDP_MATRIX_COL; j++) {
//删除三个相连的点
removeLinked(i, j);
}
}
}
return false;
}
//是否有三个以上连接的点
private boolean isThreeLinked(int x, int y) {
int tmp;
int linked = 1;
if (x + 1 < DDP_MATRIX_ROW) {
tmp = x + 1;
while (tmp < DDP_MATRIX_ROW
&& animal[x][y] == animal[tmp][y]) {
linked++;
tmp++;
}
}
if (x - 1 >= 0) {
tmp = x - 1;
while (tmp >= 0
&& animal[x][y] == animal[tmp][y]) {
linked++;
tmp--;
}
}
if (linked >= 3) {
/* tmp = x + 1;
while (tmp < DDP_MATRIX_ROW
&& animal[tmp][y] == animal[x][y]) {
tmp++;
}
tmp = x - 1;
while (tmp >= 0
&& animal[tmp][y] == animal[x][y]) {
tmp--;
}*/
return true;
}
linked = 1;
if (y + 1 < DDP_MATRIX_COL) {
tmp = y + 1;
while (tmp < DDP_MATRIX_COL
&& animal[x][y] == animal[x][tmp]) {
linked++;
tmp++;
}
}
if (y - 1 >= 0) {
tmp = y - 1;
while (tmp >= 0
&& animal[x][y] == animal[x][tmp]) {
linked++;
tmp--;
}
}
if (linked >= 3) {
/* tmp = y + 1;
while (tmp < DDP_MATRIX_COL
&& animal[x][y] == animal[x][tmp]) {
tmp++;
}
tmp = y - 1;
while (tmp >= 0
&& animal[x][y] == animal[x][tmp]) {
tmp--;
}*/
return true;
}
return false;
}
//更新动物矩阵
private void updateAnimal() {
for (int i = 0; i < DDP_MATRIX_ROW; i++) {
for (int j = 0; j < DDP_MATRIX_COL; j++) {
if (animal[i][j] == EMPTY) {
//将矩阵中为空值的点再进行随机赋值
animal[i][j] = rand.nextInt(ANIMAL_NUM);
}
}
}
}
//动物下降
// private void downAnimal() {
// int tmp;
// for (int j = DDP_MATRIX_COL - 1; j >= 0; j--) {
// for (int i = 0; i < DDP_MATRIX_ROW; i++) {
// //第i列j行为空(被削去动物)
// if (animal[j][i] == EMPTY) {
// //第i列上方动物下移
// for (int k = j - 1; k >= 0; k--) {
// tmp = animal[k][i];
// animal[k][i] = animal[k+1][i];
// animal[k+1][i] = tmp;
// }
// }
// }
// }
// }
//动物下降
private void downAnimal() {
int tmp;
for (int j = DDP_MATRIX_COL - 1; j >= 0; j--) {
for (int i = 0; i < DDP_MATRIX_ROW; i++) {
if (animal[j][i] == EMPTY) {
for (int k = j - 1; k >= 0; k--) {
if (animal[k][i] != EMPTY) {
tmp = animal[k][i];
animal[k][i] = animal[j][i];
animal[j][i] = tmp;
break;
}
}
}
}
}
}
private void print() {
for (int i = 0; i < DDP_MATRIX_ROW; i++) {
for (int j = 0; j < DDP_MATRIX_COL; j++) {
System.out.print(animal[i][j]);
没有合适的资源?快使用搜索试试~ 我知道了~
详细解读Java对对碰图形版卡游戏的源代码-课程设计
共25个文件
png:7个
class:6个
xml:4个
需积分: 0 0 下载量 201 浏览量
2023-08-15
03:29:04
上传
评论
收藏 84KB RAR 举报
温馨提示
详细解读Java对对碰图形版卡游戏的源代码--【课程设计】 有一些卡,不过没发现啥BUG 本系列校训 用免费公开视频,卷飞培训班哈人!打死不报班,赚钱靠狠干! 只要自己有电脑,前后项目都能搞!N年苦学无人问,一朝成名天下知! 喜欢的朋友还可以自己查到本站的N多毕业设计与课程设计, 如果错误或其它需要请留言!或发邮件至8195819@qq.com 本系列校训 用免费公开视频,卷飞培训班哈人!打死不报班,赚钱靠狠干! 只要自己有电脑,前后项目都能搞!N年苦学无人问,一朝成名天下知! 喜欢的朋友还可以自己查到本站的N多毕业设计与课程设计, 如果错误或其它需要请留言!或发邮件至8195819@qq.com
资源推荐
资源详情
资源评论
收起资源包目录
Java对对碰图形版卡.rar (25个子文件)
Java对对碰图形版
.classpath 232B
image
pool.jpg 5KB
Thumbs.db 24KB
cat.png 7KB
fox.png 7KB
frog.png 7KB
monkey.png 8KB
panda.png 7KB
cattle.png 8KB
chicken.png 7KB
room.jpg 6KB
src
DDP.java 101B
GameRoom.java 15KB
Java对对碰图形版.iml 448B
.idea
workspace.xml 2KB
misc.xml 267B
modules.xml 291B
encodings.xml 162B
bin
GameRoom.class 9KB
DDP.class 402B
GameRoom$1.class 748B
GameRoom$2.class 1KB
GameRoom$TimeListener.class 1KB
GameRoom$RoomPanel.class 1KB
.project 398B
共 25 条
- 1
资源评论
项目花园范德彪
- 粉丝: 5558
- 资源: 219
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功