package com.lt;
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;
public class GameWin extends JFrame {
class GameFrame extends JFrame {
private String username;
public GameFrame(String username) {
this.username = username;
setTitle("Game - Welcome, " + username + "!");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
// Add your game components and logic here
JLabel welcomeLabel = new JLabel("Welcome to the Game, " + username + "!");
add(welcomeLabel, BorderLayout.CENTER);
}
}
int width = 1440;
int height = 900;
//定义游戏默认状态
static int state = 0;
//获取背景图类的对象
Bg bg = new Bg();
//创建一个空图片对象
Image offScreenImage;
//敌方鱼类
Enamy enamy;
//计数器,用来记录游戏的重绘次数,也是鱼生成的数量
int time = 0;
//我方鱼类
MyFish myFish = new MyFish();
//定义一个随机数,以此让左右鱼的数量随机
double random;
//敌方boss类
Enamy boss;
//是否生成boss
boolean isboss = false;
//创建一个启动窗口,设置窗口信息
public GameWin() throws InterruptedException{
this.setVisible(true); //设置窗口可见
this.setSize(width, height); //设置窗口大小
this.setLocationRelativeTo(null); //设置窗口居中
this.setResizable(false); //设置窗口大小不可改变
this.setTitle("大鱼吃小鱼"); //设置窗口标题
this.setDefaultCloseOperation(EXIT_ON_CLOSE); //设置窗口按钮
//添加鼠标监听事件
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == 1 && state == 0) {
state = 1;
repaint();
}
//重新开始
if (e.getButton() == 1 && (state == 2 || state == 3)) {
reGame();
state = 1;
}
}
});
//键盘移动
this.addKeyListener(new KeyAdapter() {
@Override//按压
public void keyPressed(KeyEvent e) {
//上下左右四个键的ASCII值为 上 ↑:38下 ↓: 40左 ←: 37右 →: 39
if (e.getKeyCode() == 38) {
GameUtils.UP = true;
}
if (e.getKeyCode() == 40) {
GameUtils.DOWN = true;
}
if (e.getKeyCode() == 37) {
GameUtils.LEFT = true;
}
if (e.getKeyCode() == 39) {
GameUtils.RIGHT = true;
}
//空格键
if (e.getKeyCode() == 32) {
//如果游戏状态为运行中,则暂停,反之
switch (state) {
case 1:
state = 4;
GameUtils.drawWord(getGraphics(), "游戏暂停!!!", Color.RED, 50, 600, 400);
break;
case 4:
state = 1;
break;
}
}
}
@Override//抬起
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == 38) {
GameUtils.UP = false;
}
if (e.getKeyCode() == 40) {
GameUtils.DOWN = false;
}
if (e.getKeyCode() == 37) {
GameUtils.LEFT = false;
}
if (e.getKeyCode() == 39) {
GameUtils.RIGHT = false;
}
}
});
//背景图片重复使用,需要重复调用repaint方法
while (true) {
repaint();
time++;
Thread.sleep(40);
}
}
@Override
public void paint(Graphics g) {
//懒加载模式初始化对象
offScreenImage = createImage(width, height);
Graphics gImage = offScreenImage.getGraphics(); //获取图片对应的画笔对象
bg.paintSelf(gImage, myFish.level);
//游戏状态:0未开始,1游戏中,2游戏失败,3游戏胜利,4游戏暂停,5重新开始
switch (state) {
case 0:
break;
case 1:
myFish.paintSelf(gImage);
logic(); //不断添加敌方鱼类
for (Enamy enamy : GameUtils.EnamyList) {
enamy.paintSelf(gImage);
}
//boss鱼的生成
if (isboss) {
boss.x += boss.dir * boss.speed;
boss.paintSelf(gImage);
if (boss.x < 0) {
gImage.setColor(Color.RED);
gImage.fillRect(boss.x, boss.y, 240, boss.height / 30);
}
}
break;
case 2:
logic(); //不断添加敌方鱼类
for (Enamy enamy : GameUtils.EnamyList) {
enamy.paintSelf(gImage);
}
//添加敌方boss
if (isboss) {
boss.paintSelf(gImage);
}
break;
case 3: //玩家胜利
myFish.paintSelf(gImage);
break;
case 4:
return;
default:
break;
}
//将绘制好的图片一次性绘制到主窗口中
g.drawImage(offScreenImage, 0, 0, null);
}
//批量添加鱼类
void logic() {
//关卡难度
if (GameUtils.count < 5) {
GameUtils.level = 0;
myFish.level = 1;
} else if (GameUtils.count <= 15) {
GameUtils.level = 1;
} else if (GameUtils.count <= 50) {
GameUtils.level = 2;
myFish.level = 2;
} else if (GameUtils.count <= 150) {
GameUtils.level = 3;
myFish.level = 3;
} else if (GameUtils.count <= 300) {
GameUtils.level = 4;
myFish.level = 3;
} else { //分数大于300,玩家胜利
state = 3;
}
random = Math.random();
switch (GameUtils.level) {
case 4:
if (time % 60 == 0) {
if (random > 0) {
boss = new Enamy_Boss();
isboss = true;
}
}
case 3:
case 2:
if (time % 30 == 0) {
if (random > 0.5) {
enamy = new Enamy_3_L();
} else {
enamy = new Enamy_3_R();
}
GameUtils.EnamyList.add(enamy);
}
case 1:
if (time % 20 == 0) {
if (random > 0.5) {
enamy = new Enamy_2_L();
} else {
enamy = new Enamy_2_R();
}
GameUtils.EnamyList.add(enamy);
}
case 0:
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java+Swing+txt大鱼吃小鱼(高分课程设计+用户登陆、注册功能)
共130个文件
gif:16个
png:16个
class:15个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 166 浏览量
2024-01-10
11:02:11
上传
评论
收藏 1.61MB RAR 举报
温馨提示
项目已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 详见:https://blog.csdn.net/Timi2019/article/details/135148590 1、创建窗口对象Ui 2、背景的绘制 3、键盘的监听事件 4、将己方鱼放上去 5、让小鱼移动 6、其他的鱼并引导(先创建集合将鱼装起来,获得每个对象,画图) 7、吃鱼 8、被吃
资源推荐
资源详情
资源评论
收起资源包目录
基于Java+Swing+txt大鱼吃小鱼(高分课程设计+用户登陆、注册功能) (130个子文件)
0b03951c545b3012fc1f27367b2e03bf5a542520 4KB
0b03951c545b3012fc1f27367b2e03bf5a542520 4KB
0b03951c545b3012fc1f27367b2e03bf5a542520 0B
0b03951c545b3012fc1f27367b2e03bf5a542520 0B
1643915abb5be6a2fe115b86e23d4c957b0da0e1 0B
1643915abb5be6a2fe115b86e23d4c957b0da0e1 0B
1643915abb5be6a2fe115b86e23d4c957b0da0e1 0B
1643915abb5be6a2fe115b86e23d4c957b0da0e1 0B
196349e62c3f191e0364e5825ce5047d29533636 0B
196349e62c3f191e0364e5825ce5047d29533636 0B
196349e62c3f191e0364e5825ce5047d29533636 0B
196349e62c3f191e0364e5825ce5047d29533636 0B
1ab5c5fc38eaf524cf91a55d4858dc1877636e87 64B
1ab5c5fc38eaf524cf91a55d4858dc1877636e87 64B
1ab5c5fc38eaf524cf91a55d4858dc1877636e87 0B
1ab5c5fc38eaf524cf91a55d4858dc1877636e87 0B
60d0ca9fae32b80d7f5d1baa0013355c18294854 0B
60d0ca9fae32b80d7f5d1baa0013355c18294854 0B
60d0ca9fae32b80d7f5d1baa0013355c18294854 0B
60d0ca9fae32b80d7f5d1baa0013355c18294854 0B
a2ff4b759fa20c20425b790448dee4d9d157d0ae 905B
a2ff4b759fa20c20425b790448dee4d9d157d0ae 905B
a2ff4b759fa20c20425b790448dee4d9d157d0ae 0B
a2ff4b759fa20c20425b790448dee4d9d157d0ae 0B
a5846e3d3d9cd29b0763fcfad079e9a8f7241db3 416B
a5846e3d3d9cd29b0763fcfad079e9a8f7241db3 416B
a5846e3d3d9cd29b0763fcfad079e9a8f7241db3 0B
a5846e3d3d9cd29b0763fcfad079e9a8f7241db3 0B
a89c43f965e106c54c44d662ec68ff93cd9ec7c2 1KB
a89c43f965e106c54c44d662ec68ff93cd9ec7c2 1KB
a89c43f965e106c54c44d662ec68ff93cd9ec7c2 0B
a89c43f965e106c54c44d662ec68ff93cd9ec7c2 0B
accef3b85e6435ca75103b23e5e53875c073da51 0B
accef3b85e6435ca75103b23e5e53875c073da51 0B
accef3b85e6435ca75103b23e5e53875c073da51 0B
accef3b85e6435ca75103b23e5e53875c073da51 0B
c34c4d4515838671e047c527dd8e27c8dc7ea726 1KB
c34c4d4515838671e047c527dd8e27c8dc7ea726 1KB
c34c4d4515838671e047c527dd8e27c8dc7ea726 0B
c34c4d4515838671e047c527dd8e27c8dc7ea726 0B
GameWin.class 5KB
GameUtils.class 2KB
Bg.class 2KB
MyFish.class 1KB
GameWin$2.class 1KB
GameWin$GameFrame.class 1KB
Enamy.class 901B
GameWin$1.class 824B
Enamy_3_L.class 792B
Enamy_Boss.class 620B
Enamy_2_L.class 618B
Enamy_1_L.class 591B
Enamy_3_R.class 413B
Enamy_2_R.class 413B
Enamy_1_R.class 412B
.classpath 452B
.classpath 452B
f3656baaf0c9927b3eecbe2b5422625926398ba2 1KB
f3656baaf0c9927b3eecbe2b5422625926398ba2 1KB
f3656baaf0c9927b3eecbe2b5422625926398ba2 0B
f3656baaf0c9927b3eecbe2b5422625926398ba2 0B
f53a2f319ad097fca531bb8861e37a86a2c06d7a 4KB
f53a2f319ad097fca531bb8861e37a86a2c06d7a 4KB
f53a2f319ad097fca531bb8861e37a86a2c06d7a 0B
f53a2f319ad097fca531bb8861e37a86a2c06d7a 0B
myfish_right.gif 90KB
myfish_right.gif 90KB
myfish_left.gif 89KB
myfish_left.gif 89KB
boss.gif 14KB
boss.gif 14KB
boss.gif 14KB
boss.gif 14KB
fish1_r.gif 6KB
fish1_r.gif 6KB
fish1_r.gif 6KB
fish1_r.gif 6KB
fish1_l.gif 5KB
fish1_l.gif 5KB
fish1_l.gif 5KB
fish1_l.gif 5KB
.gitignore 237B
.gitignore 237B
EatFish.iml 687B
EatFish.iml 687B
GameWin.java 10KB
Enamy.java 2KB
GameUtils.java 2KB
Bg.java 2KB
MyFish.java 1KB
sea.jpg 229KB
sea.jpg 229KB
sea.jpg 229KB
sea.jpg 229KB
index.pb 903B
index.pb 903B
index.pb 903B
index.pb 903B
fish2_r.png 19KB
fish2_r.png 19KB
共 130 条
- 1
- 2
资源评论
小码叔
- 粉丝: 4316
- 资源: 1214
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功