java小恐龙游戏_【分享】 chrome恐龙小游戏 java
本帖最后由 leiyanfu 于 2019-5-3 14:27 编辑
最近学习java也有一段时间了 前些天打开网站老是出出现小恐龙所以就萌生了想模仿着写一个 无奈一些东西我还没学到 比如java的窗口 键盘事件的监听啊 什么的
所以就去网上找了一下 哎 还真有 果断下载 idea打开阅读一帆 尝试着自己写一写还不错 我就把源码分享给大家
1.jpg (24.45 KB, 下载次数: 3)
2019-5-3 14:24 上传
QQ截图20190503142359.jpg (21.84 KB, 下载次数: 2)
2019-5-3 14:24 上传
[Java] 纯文本查看 复制代码package tn;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class BackgroundImage {
BufferedImage image;//主图片
BufferedImage image1, image2,image_over,image_yun;//轮播图片
Graphics2D g2;//美工
int x1, x2;//两个图片的坐标
int x_yun=800,y_yun=50;
int x_over=240,y_over=50;
static final int SPEED = 3;//速度
public BackgroundImage() {
try {
image1 = ImageIO.read(new File("image/map.png"));
image2 = ImageIO.read(new File("image/map1.png"));
image_over = ImageIO.read(new File("image/game_over.png"));
image_yun = ImageIO.read(new File("image/yun.png"));
} catch (Exception e) {
e.printStackTrace();
}
image = new BufferedImage(734, 286, BufferedImage.TYPE_INT_BGR);
g2 = image.createGraphics();
x1 = 0;
x2 = 734;
g2.drawImage(image1, x1, 0, null);
g2.drawImage(image2, x2, 0, null);
}
//背景滚动
public void roll() {
x1 -= SPEED;
x2 -= SPEED;
if (x1 <= -734) {
x1 = 734;
}
if (x2 <= -734) {
x2 = 734;
}
g2.drawImage(image1, x1, 0, null);
g2.drawImage(image2, x2, 0, null);
x_yun-=1;
if (x_yun<=0){
g2.drawImage(image_yun, x_yun, y_yun, null);
x_yun=750;
if ((y_yun+=26)<80)
y_yun+=26;
}
}
}
[Java] 纯文本查看 复制代码package tn;
import sun.applet.Main;
import javax.swing.*;
import java.awt.*;
//线程类
public class FreshThread extends Thread {
GamePanl p;
public FreshThread(GamePanl p) {
this.p = p;//给类成员属性赋值
}
@Override
public void run() {
while (!p.isFinish()) {
p.repaint();//重新绘制图片
try {
Thread.sleep(p.FRESH);//休眠刷新时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Container c=p.getParent();
while(!(c instanceof MainFrame)){
c=c.getParent();
}
MainFrame f= (MainFrame) c;
JOptionPane.showMessageDialog(f," G A M E O V E R");
f.restart();
}
}
[Java] 纯文本查看 复制代码package tn;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 继承窗体面板的图片
*/
@SuppressWarnings("all")
public class GamePanl extends JPanel implements KeyListener {
//主图片
BufferedImage image;
//绘图工具,美工
Graphics2D g2;
kLong klong;//恐龙
boolean finish = false;//游戏结束
static final int FRESH = 10;//刷新时间,毫秒
BackgroundImage background;
List list = new ArrayList();//障碍物集合
int addObjectTimer = 0;
object ob=new object();
int score=0;//分数
int addScoreTimer=0;
//构造方法
public GamePanl() {
image = new BufferedImage(734, 286, BufferedImage.TYPE_INT_BGR);
g2 = image.createGraphics();
klong = new kLong();//实例化恐龙类
background = new BackgroundImage();//实例化背景图片
list.add(new object());
FreshThread t = new FreshThread(this);//刷新线程
t.start();
}
private void painImage() {//绘制图片
klong.move();//让小恐龙移动
background.roll();//调用滚动图片
g2.drawImage(background.image, 0, 0, this);//绘制背景
g2.drawImage(background.image_yun, background.x_yun,background.y_yun, this);//绘制白云
g2.drawImage(klong.image, klong.x, klong.y, this);//绘制恐龙
if (addObjectTimer >= 1400) {//计算分数时间判断
list.add(new object());
addObjectTimer = 0;
}
for (int i = 0; i < list.size(); i++) {
object o = list.get(i);
o.move();
o.bridMove();
g2.drawImage(o.image, o.x, o.y, this);//绘制障碍
//判断障碍物是否和头、脚相撞
if (o.bounds().intersects(klong.bounds1()) || o.bounds().intersects(klong.bounds2())){
gameOver();//游戏结束
}
}
//分数++
if (addObjectTimer>=50){
score+=1;
addScoreTimer=0;
}
//分数显示代码---"%05d"---指的是分数以五位数显示
g2.drawString(String.format("%05d",score),600,35 );
g2.drawString("Hi",536,35 );
g2.drawString(String.format("%05d",+MainFrame.topScore),550,35 );
addObjectTimer += FRESH;
addScoreTimer +=FRESH;
}
//游戏结束
public void gameOver(){
finish=true;
// image=background.image_over;
g2.drawImage(background.image_over,background.x_over,background.y_over,null);
if (score>MainFrame.topScore){//判断最高分
MainFrame.topScore=score;
}
}
@Override
public void paint(Graphics g) {
painImage();
g.drawImage(image, 0, 0, this);
}
public boolean isFinish() {
return finish;
}
//键盘监听
@Override
public void keyTyped(KeyEvent e) {//按键类型
}
@Override
public void keyPressed(KeyEvent e) {//按键按下
int code = e.getKeyCode();//获取按下的编码
if (code == KeyEvent.VK_SPACE) {
klong.jump();
}
}
@Override
public void keyReleased(KeyEvent e) {//按键抬起
}
}
[Java] 纯文本查看 复制代码package tn;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
/**
* 恐龙类
*/
public class kLong {
public int x, y;//坐标
BufferedImage image;//图片
BufferedImage image1, image2, image3,image_over;
int stepTime = 0;//计时器
int fresh = GamePanl.FRESH;
boolean jumpState = false;//跳跃的状态
int jumpHeight = 100;//跳跃高度
final int LOWEST_Y = 200;//最低坐标
int jumpValue = 5;//跳跃的增变量
public kLong() {
try {
image1 = ImageIO.read(new File("image/long1.png"));
image2 = ImageIO.read(new File("image/long2.png"));
image3 = ImageIO.read(new File("image/long3.png"));
image_over = ImageIO.read(new File("image/over.png"));
} catch (IOException e) {
e.printStackTrace();
}
x = 50;//起始坐标
y = LOWEST_Y;//起始
}
public void move() {//移动
step();//踏步
if (jumpState) {
if (y >= LOWEST_Y) {
jumpValue = -4;
}
if (y <= LOWEST_Y - jumpHeight) {
jumpValue = 4;
}
y += jumpValue;
image = image3;
if (y >= LOWEST_Y) {
jumpState = false;
}
}
}
//踏步
void step() {
int tmp = stepTime / 100 % 2;
if (tmp == 1) {
image = image1;
} else {
image = image2;
}
stepTime += fresh;
}
public void jump() {//跳跃
jumpState = true;
}
//接触死亡区域
public Rectangle bounds1(){
return new Rectangle(x+20,y,20,10);
} //接触死亡区域
public Rectangle bounds2(){
return new Rectangle(x+5,y+35,20,10);
}
}
[Java] 纯文本查看 复制代码package tn;
import javax.swing.*;
import java.awt.*;
public class MainFrame extends JFrame {
GamePanl p;
public MainFrame() {
//窗口关闭
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p = new GamePanl();
//获取窗体的主容器
Container c = getContentPane();
c.add(p);//把面板添加到主容器中
addKeyListener(p);//添加键盘监听
}
public static void main(String[] args) {
MainFrame frame = new MainFrame();
//窗体大小
frame.setBounds(340, 220, 734, 320);
//窗体可见
frame.setVisible(true);
//屏幕居中
frame.setLocationRelativeTo(null);
frame.setTitle("跳一跳");
}
//复活,把死掉的东西删掉,重新来过
public void restart(){
Container c=getContentPane();
//删除所有死的组件
c.removeAll();;
GamePanl gp=new GamePanl();
c.add(gp);
addKeyListener(gp);
c.validate();//重新验证容器组件
}
public static int topScore=0;//最高分
}
[Java] 纯文本查看 复制代码package tn;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
/**
* 障碍物类
*/
public class object {
kLong klong=new kLong();
Random r = new Random();
int x, y;
public boolean judge=false;
BufferedImage image;
BufferedImage cactus01, cactus02, cactus03,bird1,bird2;//创建仙人掌+鸟
int speed = BackgroundImage.SPEED -1;
int temp = r.nextInt(4) + 1;//1-2-3
public object() {
//读取图片
try {
cactus01 = ImageIO.read(new File("image/cactus01.png"));
cactus02 = ImageIO.read(new File("image/cactus02.png"));
cactus03 = ImageIO.read(new File("image/cactus03.png"));
bird1= ImageIO.read(new File("image/bird1.png"));
bird2= ImageIO.read(new File("image/bird2.png"));
} catch (IOException e) {
e.printStackTrace();
}
x = 800;
y = 209;
//随机输出障碍物
switch (temp) {
case 1:
image = cactus01;
break;
case 2:
image = cactus02;
break;
case 3:
image = cactus03;
y = 200;
break;
default:
judge=true;
}
}
//鸟的运动
void bridMove() {
if (judge){
// if (temp>2){
// y-=20;
// }
int tmp = klong.stepTime / 100 % 2;
if (tmp == 1) {
image = bird1;
} else {
image = bird2;
}
klong.stepTime += klong.fresh;
}
}
//滚动
public void move() {
x -= speed;
x -= speed;
}
//死亡区域
public Rectangle bounds() {
return new Rectangle(x,y+2,image.getWidth()-2,image.getHeight()-10);
}
}
最后附上图片资源以及源码
跳一跳.rar
(84.83 KB, 下载次数: 190)
2019-5-3 14:27 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB
java小恐龙游戏_【分享】 chrome恐龙小游戏 java相关推荐
- java恐怖游戏_分享个经典恐怖游戏系列
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 10.隔离区: 这间房子大体构造是,上半部分有4间小屋,从左至右编号为1.2.3.4:下部左边有两间大屋,编号5和6,右半部分通往出口.下面说一下过关流程 ...
- 微信抽奖小程序开发_分享微信抽奖小程序制作的步骤
各位商家在节日期间做活动的时候,都希望用更少的费用去或者更好的宣传和推广的效果.比较常见的就是抽奖活动小程序.无须玩家下载,通过微信扫码或者指定入口就可以参与. 方便,效果又好. 那么,性价比高的抽奖 ...
- 积木机器人拼装图恐龙图纸_乐高10698恐龙拼装图纸 | 手游网游页游攻略大全
发布时间:2015-09-19 乐高世界是一款和我的世界很像的游戏,这款游戏的自由度和沙盒架构应该会让这款游戏成为耐玩性极高,今天跟大家介绍的是积木拼装设计软件,下面为大家提供了下载地址和介绍,感兴趣 ...
- android简单小程序学成语,分享3个成语游戏小程序,让你学习游戏两不误
原标题:分享3个成语游戏小程序,让你学习游戏两不误 1.杜甫教成语 杜甫教成语,一个轻松简单的学成语小程序,是一个猜字型的小程序,是一个考验我们的成语词库深度的小程序.杜甫教成语其实是一个既可以玩游戏 ...
- pythonui教学视频_分享软件开发相关视频教程(Java、C++、Python、UI设计、HTML5、iOS)...
以下是我收藏的关于开发及其他教程,基本都是花钱在网上买的,网盘没有加密的,虽然特别爱学习,但并不可能有这么多的精力学习这么多,技术总是很快就被新的淘汰掉,放在网盘中确实太浪费呀,分享出去吧,希望想学习 ...
- java自学难点_分享在达内教育培训Java的感受
刚在达内教育培训完java,给即将来培训以及已经在培的学员分享下我的感受 回想一下在达内教育学习Java时的情景,我仍然兴奋不已,其实在刚接触Java时,自己确实有点晕,但经过一段时间学习,逐渐走出了 ...
- java android 五子棋游戏_基于Android平台五子棋游戏最终版.doc
基于Android平台五子棋游戏最终版 毕业设计(论文)任务书 毕业设计(论文)题目: 基于android平台的五子棋游戏的设计与实现 毕业设计(论文)要求及原始数据(资料): 1.综述国内基于and ...
- 微信小程序能给花店带来哪些作用_分享花店微信小程序开发优势
在开发过小程序的线下实体店铺中,有不少花店.开发了小程序的花店纷纷表示:"小程序提供了非常大的帮助,现在越来越离不开小程序了".那么,小程序能给花店带来哪些帮助? 1.提升店铺曝光 ...
- pygame只能编写游戏_使用pygame开发的游戏发布+小总结
概述 大约两年前接触了python,然后就爱上了这个语言. 然后就想用它写游戏,很快就找到了pygame这个库,但是pygame貌似十分冷门,网上教程也比较少,好在还有个文档来参考. 于是胡乱搞了很久 ...
- 那些年的java游戏_那些年我们曾为之痴迷的经典JAVA游戏(3)
彩虹六号 <彩虹六号>和一般意义上的第一人称射击游戏有所不同,更侧重于战术层次上的策略.或许这款游戏的画面现在看起来很渣,但那时在JAVA平台上已经属于画面非常好的游戏了,同样属于早期手游 ...
最新文章
- 【算法题】天平砝码称重
- 两机五节点电力系统的潮流仿真计算_南科大杨再跃课题组在电力系统、机器学习等领域取得重要研究成果...
- thinkphp URL相关
- python短信接口_短信接口DEMO-PYTHON
- spring之二——使用maven创建一个java project
- 阿诺德图像加密c语言,基于Arnold置乱的数字图像加密算法(二)
- 李航《统计学习方法》第四章课后答案链接
- 【问题记录】mysql设置任意ip访问
- oracle 表复制 long,关于oracle的数据库的数据Long和Number的转化字段
- 干货|软件测试简历的编写以及注意事项
- 地铁应急指挥系统解决方案
- html中禁止网页另存为、查看源文件、屏蔽鼠标右键
- 淘宝特价版事业部java面试,含爱奇艺,小米,腾讯,阿里
- UG\NX二次开发 判断两个圆柱面共轴的思路
- oracle wallet,Oracle Wallet的使用
- ffmpeg 硬件加速 wmv 视频转码
- Babel转码器详解
- 怎么从SPSS的分析结果中得出回归方程?
- Docker容器Removal In Progress删除方案
- 警告!来历不明的疫情邮件或许是黑客陷阱