本帖最后由 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相关推荐

  1. java恐怖游戏_分享个经典恐怖游戏系列

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 10.隔离区: 这间房子大体构造是,上半部分有4间小屋,从左至右编号为1.2.3.4:下部左边有两间大屋,编号5和6,右半部分通往出口.下面说一下过关流程 ...

  2. 微信抽奖小程序开发_分享微信抽奖小程序制作的步骤

    各位商家在节日期间做活动的时候,都希望用更少的费用去或者更好的宣传和推广的效果.比较常见的就是抽奖活动小程序.无须玩家下载,通过微信扫码或者指定入口就可以参与. 方便,效果又好. 那么,性价比高的抽奖 ...

  3. 积木机器人拼装图恐龙图纸_乐高10698恐龙拼装图纸 | 手游网游页游攻略大全

    发布时间:2015-09-19 乐高世界是一款和我的世界很像的游戏,这款游戏的自由度和沙盒架构应该会让这款游戏成为耐玩性极高,今天跟大家介绍的是积木拼装设计软件,下面为大家提供了下载地址和介绍,感兴趣 ...

  4. android简单小程序学成语,分享3个成语游戏小程序,让你学习游戏两不误

    原标题:分享3个成语游戏小程序,让你学习游戏两不误 1.杜甫教成语 杜甫教成语,一个轻松简单的学成语小程序,是一个猜字型的小程序,是一个考验我们的成语词库深度的小程序.杜甫教成语其实是一个既可以玩游戏 ...

  5. pythonui教学视频_分享软件开发相关视频教程(Java、C++、Python、UI设计、HTML5、iOS)...

    以下是我收藏的关于开发及其他教程,基本都是花钱在网上买的,网盘没有加密的,虽然特别爱学习,但并不可能有这么多的精力学习这么多,技术总是很快就被新的淘汰掉,放在网盘中确实太浪费呀,分享出去吧,希望想学习 ...

  6. java自学难点_分享在达内教育培训Java的感受

    刚在达内教育培训完java,给即将来培训以及已经在培的学员分享下我的感受 回想一下在达内教育学习Java时的情景,我仍然兴奋不已,其实在刚接触Java时,自己确实有点晕,但经过一段时间学习,逐渐走出了 ...

  7. java android 五子棋游戏_基于Android平台五子棋游戏最终版.doc

    基于Android平台五子棋游戏最终版 毕业设计(论文)任务书 毕业设计(论文)题目: 基于android平台的五子棋游戏的设计与实现 毕业设计(论文)要求及原始数据(资料): 1.综述国内基于and ...

  8. 微信小程序能给花店带来哪些作用_分享花店微信小程序开发优势

    在开发过小程序的线下实体店铺中,有不少花店.开发了小程序的花店纷纷表示:"小程序提供了非常大的帮助,现在越来越离不开小程序了".那么,小程序能给花店带来哪些帮助? 1.提升店铺曝光 ...

  9. pygame只能编写游戏_使用pygame开发的游戏发布+小总结

    概述 大约两年前接触了python,然后就爱上了这个语言. 然后就想用它写游戏,很快就找到了pygame这个库,但是pygame貌似十分冷门,网上教程也比较少,好在还有个文档来参考. 于是胡乱搞了很久 ...

  10. 那些年的java游戏_那些年我们曾为之痴迷的经典JAVA游戏(3)

    彩虹六号 <彩虹六号>和一般意义上的第一人称射击游戏有所不同,更侧重于战术层次上的策略.或许这款游戏的画面现在看起来很渣,但那时在JAVA平台上已经属于画面非常好的游戏了,同样属于早期手游 ...

最新文章

  1. 【算法题】天平砝码称重
  2. 两机五节点电力系统的潮流仿真计算_南科大杨再跃课题组在电力系统、机器学习等领域取得重要研究成果...
  3. thinkphp URL相关
  4. python短信接口_短信接口DEMO-PYTHON
  5. spring之二——使用maven创建一个java project
  6. 阿诺德图像加密c语言,基于Arnold置乱的数字图像加密算法(二)
  7. 李航《统计学习方法》第四章课后答案链接
  8. 【问题记录】mysql设置任意ip访问
  9. oracle 表复制 long,关于oracle的数据库的数据Long和Number的转化字段
  10. 干货|软件测试简历的编写以及注意事项
  11. 地铁应急指挥系统解决方案
  12. html中禁止网页另存为、查看源文件、屏蔽鼠标右键
  13. 淘宝特价版事业部java面试,含爱奇艺,小米,腾讯,阿里
  14. UG\NX二次开发 判断两个圆柱面共轴的思路
  15. oracle wallet,Oracle Wallet的使用
  16. ffmpeg 硬件加速 wmv 视频转码
  17. Babel转码器详解
  18. 怎么从SPSS的分析结果中得出回归方程?
  19. Docker容器Removal In Progress删除方案
  20. 警告!来历不明的疫情邮件或许是黑客陷阱

热门文章

  1. 苹果python怎么用_mac怎么使用python
  2. Linux下的开源免费杀毒软件Clamav
  3. 力扣刷题记录--位运算问题
  4. linux查看cpupower模式,CPU优化建议使用cpupower设置CPU Performance模式
  5. vue项目实现多张图片轮番效果
  6. Windows bat复制局域网文件
  7. 微软teams软件_如何在Microsoft Teams中创建快速投票
  8. python发微信语音没声音怎么回事_苹果手机微信语音没声音怎么回事?
  9. 从华为28年坚持技术探索,看Mate 8如何卡位高端
  10. Pythonic algorithm