package View;
import Model.*;
import Model.Timer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import Model.Object;
import java.util.ArrayList;
import java.util.List;
import static Model.Bg.LifeWaterNums;
public class GameFrame extends JFrame implements Runnable {
//定义一张画布,双缓存解决图片闪动问题
Image newImage;
//设置路径
public static String PciturePath=System.getProperty("user.dir")+"\\img\\";
//表示游戏的状态
public static int GameState=1; //1:游戏运行中,2:商店状态 3:游戏胜利,4:游戏结束
static Bg bg = new Bg();
Line line = new Line(this);
//是否发生重合
boolean isCoincide=false;
//窗口图标
ImageIcon T =new ImageIcon(PciturePath+"icon.jpg");
//定义一个存储金块,石块 ,炸弹,沙漏的集合
public List<Object> objectList=new ArrayList<>();
//添加物品方法
public void addObject(){
//添加金块
for (int i = 0; i < 8; i++) {
//生成随机金块数
double nums=Math.random();
Gold NowGold;
//0-0.3生成中等金块
if (nums<=0.3&& nums>=0) {
NowGold=new Gold();
}
else if (nums>0.3&&nums<=0.7){
//0.3-0.7生成小金块
NowGold=new GoldMin();
}
else{
NowGold=new GoldMax();
}
for (Object o:objectList){
if (NowGold.getRectangle().intersects(o.getRectangle())){
//有重叠,不可以放置
isCoincide=false;
}
}
if (isCoincide){
objectList.add(NowGold);
}
else{
isCoincide=true;
i--;
}
}
//添加石块
for (int i = 0; i < 3; i++) {
Rock NowrRock=new Rock();
for (Object o:objectList){
if (NowrRock.getRectangle().intersects(o.getRectangle())){
//有重叠,不可以放置
isCoincide=false;
}
}
if (isCoincide){
objectList.add(NowrRock);
}
else{
isCoincide=true;
i--;
}
}
//添加炸弹
for ( int i=0;i<3;i++){
Boom NowBoom=new Boom();
for (Object o:objectList){
if (NowBoom.getRectangle().intersects(o.getRectangle())){
//有重叠,不可以放置
isCoincide=false;
}
}
if (isCoincide){
objectList.add(NowBoom);
}
else{
isCoincide=true;
i--;
}
}
//添加沙漏
for (int i = 0; i < 3; i++) {
Timer timer=new Timer();
for (Object o:objectList){
if (timer.getRectangle().intersects(o.getRectangle())){
isCoincide=false;
}
}
if (isCoincide){
objectList.add(timer);
}
else{
//有重叠,不可以放置
isCoincide=true;
i--;
}
}
bg.StartTime=System.currentTimeMillis();
}
private Thread thread = new Thread(this);
public GameFrame() {
this.setIconImage(T.getImage());
this.setTitle("黄金矿工");
this.setSize(768, 824);
this.setLocationRelativeTo(null);//设置居中
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
repaint();
thread.start();
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton()==1){
//鼠标点击左键
line.state=1;
}
}
});
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton()==3&&line.state==3){
//鼠标点击右键,使用炸药包
if (Bg.BoomNums>0){
bg.BoomStatic=true;
bg.BoomNums--;
}
else {
JOptionPane.showMessageDialog(null,"药水用完了","提示", javax.swing.JOptionPane.PLAIN_MESSAGE,new ImageIcon("D:\\JAVA\\imgs\\gold\\message.gif"));
}
}
}
});
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==38){
//按上键进入商店
GameState=2;
}
if (e.getKeyCode()==40){
//按下键退出商店
GameState=1;
}
if (e.getKeyCode()==37&&GameState==2){
if (bg.ShopNum>0){
//左键购买炸药包
bg.BoomNums=bg.BoomNums+1;
bg.ShopNum=bg.ShopNum-1;
JOptionPane.showMessageDialog(null,"成功购买炸药包","购买成功", javax.swing.JOptionPane.PLAIN_MESSAGE,new ImageIcon("D:\\JAVA\\imgs\\gold\\message.gif"));
}
else{
JOptionPane.showMessageDialog(null,"每局只能购买一次道具哦!","提示", javax.swing.JOptionPane.PLAIN_MESSAGE,new ImageIcon("D:\\JAVA\\imgs\\gold\\message.gif"));
}
}
if (e.getKeyCode()==39&&GameState==2){
if (bg.ShopNum>0){
//右键购买复活药水
LifeWaterNums= LifeWaterNums+1;
bg.ShopNum=bg.ShopNum-1;
JOptionPane.showMessageDialog(null,"成功购买复活药水","购买成功", javax.swing.JOptionPane.PLAIN_MESSAGE,new ImageIcon("D:\\JAVA\\imgs\\gold\\message.gif"));
}
else{
JOptionPane.showMessageDialog(null,"每局只能购买一次道具哦!","提示", javax.swing.JOptionPane.PLAIN_MESSAGE,new ImageIcon("D:\\JAVA\\imgs\\gold\\message.gif"));
}
}
}
});
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if ((GameState==4||GameState==3)&&e.getKeyCode()==32){
//重新开始游戏
// System.out.println(e.getKeyCode());
bg.StartTime = System.currentTimeMillis();
dispose();
GameFrame gameFrame =new GameFrame();
gameFrame.addObject();
Bg.restart();
Line.ResurGence();
GameState=1;
}
}
});
}
//循环判断
public void decide(){
if(GameState==1&&!bg.TimeOver()){
if (Bg.score>=bg.goal){
if (Bg.level>=2){
//游戏胜利
GameState=3;
}
else {
//游戏继续
bg.StartTime = System.currentTimeMillis();
Bg.NextLeve();
Line.NextLeve();
}
}
}
if (GameState==1&&Bg.TimeOver()){
//时间用完可以选择使用复活药水
if (LifeWaterNums>0){
int result=JOptionPan
没有合适的资源?快使用搜索试试~ 我知道了~
javaswing黄金矿工-idea版本
共141个文件
png:40个
class:39个
java:22个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 6 下载量 50 浏览量
2023-01-09
10:47:03
上传
评论 1
收藏 12.99MB RAR 举报
温馨提示
一、系统介绍 《黄金矿工》游戏是一个经典的抓金子小游戏,它可以锻炼人的反应能力。。该游戏中,可以通过“挖矿”获得积分,游戏道具:有3瓶药水,在回收绳子抓金子的时候速度稍快点。 主要设计 1.设计游戏界面,用swing实现 2.随机创建金块算法 3.随机创建石块算法 4.计时系统设计 5.积分系统设计 6.设置鼠标事件,鼠标左键出钩子;鼠标右键开始游戏,确认吃药水等功能。 7、用户登陆、背景音乐 运行环境:eclipse/idea/mysql 详见:https://blog.csdn.net/Timi2019/article/details/128117438
资源推荐
资源详情
资源评论
收起资源包目录
javaswing黄金矿工-idea版本 (141个子文件)
FirstFrame.class 6KB
Bg.class 6KB
GameFrame.class 5KB
Line.class 4KB
RegisterFrame.class 4KB
HelpFrame.class 3KB
SecondFrame.class 3KB
MusicTool.class 2KB
RegisterFrame$1.class 2KB
UserDao.class 2KB
Music.class 1KB
Voice.class 1KB
GameFrame$3.class 1KB
Object.class 1KB
Rock.class 1KB
DbUtil.class 1KB
GameFrame$2.class 1KB
Boom.class 1KB
User.class 1KB
Gold.class 1KB
MusicTool$1.class 1KB
SecondFrame$1.class 1KB
GameFrame$4.class 1KB
Timer.class 1KB
RegisterDao.class 1006B
MusicTool$2.class 973B
GoldMax.class 910B
GoldMin.class 870B
GameFrame$1.class 769B
RegisterFrame$2.class 743B
FirstFrame$3.class 741B
HelpFrame$1.class 740B
SecondFrame$3.class 739B
SecondFrame$2.class 738B
HelpFrame$2.class 725B
HelpFrame$3.class 723B
FirstFrame$2.class 711B
FirstFrame$1.class 711B
StringUtil.class 654B
urec.data 78B
u.data 12B
msc64.dll 1.44MB
msc32.dll 1.21MB
boss.gif 141KB
down.GIF 45KB
gold2.gif 16KB
message.gif 12KB
Square.gif 10KB
gold1.gif 6KB
gold0.gif 4KB
.gitignore 184B
GoldMiner.iml 484B
mysql-connector-java-8.0.11.jar 1.94MB
bridj-0.7.0.jar 914KB
webcam-capture-0.3.12.jar 418KB
gson-2.8.6.jar 235KB
Msc.jar 139KB
jl-1.0.1.jar 103KB
json-20160810.jar 53KB
slf4j-api-1.7.2.jar 25KB
iflytek_yuyin.jar 9KB
GameFrame.java 9KB
Bg.java 8KB
FirstFrame.java 6KB
Line.java 5KB
RegisterFrame.java 5KB
SecondFrame.java 3KB
HelpFrame.java 3KB
MusicTool.java 2KB
Voice.java 1KB
DbUtil.java 1KB
UserDao.java 996B
Music.java 894B
Object.java 786B
RegisterDao.java 719B
User.java 708B
Rock.java 670B
Gold.java 583B
Boom.java 581B
Timer.java 459B
GoldMax.java 416B
StringUtil.java 408B
GoldMin.java 322B
Menu.jpg 68KB
bg.jpg 31KB
exist.jpg 25KB
bg2.jpg 11KB
bg1.jpg 11KB
icon.jpg 9KB
MANIFEST.MF 51B
MANIFEST.MF 51B
GoldMiner.mp3 3.05MB
helpText.png 1003KB
shop.png 897KB
winBg1.png 863KB
helpBg.png 316KB
winbg.png 101KB
music.png 80KB
shopIcon.png 42KB
user.png 42KB
共 141 条
- 1
- 2
五星资源
- 粉丝: 5526
- 资源: 1533
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- tensorflow-gpu-2.7.4-cp37-cp37m-manylinux2010-x86-64.whl
- 多段线、 圆、弧转多段线(仅我可见)
- tensorflow-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- yeyue-p8Yi4-ve4a83792.apk
- tensorflow-gpu-2.7.3-cp38-cp38-manylinux2010-x86-64.whl
- 五相感应电机矢量控制模型MATLAB
- RGLED (1) (1).circ
- IMG_20240427_215747.jpg
- python下前端WEB学习笔记
- 田间种植行排号自动生成工具
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页