80后,90后的你,是否玩过小时候经典的那个小手游?当魂斗罗的music响起,你是否依然热血沸腾。160行代码实现经典游戏魂斗罗https://www.zhihu.com/video/1221062117815914496

其实java是可以用来开发一些小游戏的,例如魂斗罗就可以用java来做,下面为大家带来了魂斗罗java源代码的分享,希望大家喜欢!

魂斗罗java代码及素材链接:SunYiYi/Java-games

以下是Java Swing程序的核心代码:

import javax.imageio.ImageIO;

import javax.swing.*;

import java.awt.*;

import java.awt.event.KeyEvent;

import java.awt.image.BufferedImage;

import java.io.IOException;

/**

* @author 徒有琴

* 所有组件通用的方法:

* setBounds(x,y,width,height)

* add方法添加子控件

* remove移除子控件

*/

public class MainFrame {

//JLabel 标签 setIcon(图)可以用来画图

public static JLabel role = new JLabel();

public static JLabel bagMan = null;

//创建背景面板对象

public static BackPanel bg = new BackPanel();

//JLayeredPane 分层的面板,控制元素的深度

public static JLayeredPane pane = new JLayeredPane();

public static void main(String[] args) {

//创建一个JFrame窗体

JFrame frame = new JFrame();

//对窗体进行设置

frame.setSize(800, 723);

frame.setTitle("专治八阿哥的孟老师-QQ 574549426");

bg.init();

role.setIcon(new ImageIcon(MainFrame.class.getResource("/media/R0.png")));

role.setBounds(90, 400, 108, 113);

bg.setBounds(0, 0, frame.getWidth(), frame.getHeight());

pane.add(role, 300);

pane.add(bg, 100);

//开启单独线程

new Thread(new Runnable() {//背包男

@Override

public void run() {

while (true) {

bagMan = new JLabel();

bagMan.setIcon(new ImageIcon(MainFrame.class.getResource("/media/v.gif")));

bagMan.setBounds(1390, 400, 71, 113);

pane.add(bagMan, 200);

pane.moveToFront(bagMan);

try {

int i = 0;

while (i < 1390) {

if (bagMan == null)

break;

bagMan.setBounds(1390 - i, 400, 71, 113);

i += 10;

Thread.sleep(200);

}

if (bagMan != null) {

MainFrame.pane.remove(bagMan);

MainFrame.pane.repaint();

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();

frame.setContentPane(pane);

frame.setLocationRelativeTo(null);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

//JPanel面板类,用来放置组件的容器

class BackPanel extends JPanel {

String direction = "R";

int pic = 0;

int margin = 0;

int count = 0;

//绘制背景图

@Override

public void paint(Graphics g) {

super.paint(g);

try {

BufferedImage bg = ImageIO.read(this.getClass().getResource("/media/bg.bmp"));

g.drawImage(bg, 0, 0, this.getWidth(), this.getHeight(), margin, 0, margin + 200, 241, this); //将图片的一部分显示在frame上

g.dispose();

} catch (IOException e) {

e.printStackTrace();

}

}

//进行初始化设置

public void init() {

KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();

manager.addKeyEventPostProcessor(new KeyEventPostProcessor() {

public boolean postProcessKeyEvent(KeyEvent e) {

if (e.getID() == KeyEvent.KEY_LAST) {

pic = 0;

if ("u".equals(direction)) {

direction = "R";

MainFrame.role.setBounds(90, 400, 108, 113);

}

MainFrame.role.setIcon(new ImageIcon(this.getClass().getResource("/media/" + direction + "0.png")));

}

if (e.getID() != KeyEvent.KEY_PRESSED || count++ % 2 != 0) {

return true;

}

if (count > 9999) {

count = 0;

}

pic++;

//处理不同的按键事件

switch (e.getKeyCode()) {

case 39://右

direction = "R";

margin++;

break;

case 37://右

direction = "L";

margin--;

if (margin < 0) {

margin = 0;

}

break;

case 32://空格

direction = "u";

if (pic > 3) {

pic = 0;

direction = "R";

MainFrame.role.setIcon(new ImageIcon(this.getClass().getResource("/media/R0.png")));

MainFrame.role.setBounds(90, 400, 108, 113);

return true;

}

MainFrame.role.setIcon(new ImageIcon(this.getClass().getResource("/media/u" + pic + ".png")));

MainFrame.role.setBounds(90, 300, 108, 113);

return true;

case 10://回车

new Thread(new Runnable() {

@Override

public void run() {

JLabel b = new JLabel();

Image image = new ImageIcon(this.getClass().getResource("/media/bullet.png"))

.getImage().getScaledInstance(20, 20,

Image.SCALE_DEFAULT);

b.setIcon(new ImageIcon(image));

b.setBounds(MainFrame.role.getX() + 70, 400, 20, 20);

MainFrame.pane.add(b, 120);//添加子弹

MainFrame.pane.moveToFront(b);//图层靠前

int i = 0;

while (i < 830) {

b.setBounds(b.getX() + 10, 400, 71, 113);

i += 20;

if (MainFrame.bagMan != null) {

if (b.getX() >= MainFrame.bagMan.getX()) {

MainFrame.pane.remove(MainFrame.bagMan);

MainFrame.pane.remove(b);

MainFrame.pane.repaint();

MainFrame.bagMan = null;

break;

}

}

try {

Thread.sleep(80);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

MainFrame.pane.remove(b);

MainFrame.pane.repaint();

}

}).start();

}

if (pic > 7) {

pic = 0;

}

MainFrame.bg.repaint();

MainFrame.role.setIcon(new ImageIcon(this.getClass().getResource("/media/" + direction + pic + ".png")));

return true;

}

});

}

}

想学java和喜欢java的小伙伴可以看这里,更多经典有趣的小游戏源码及java教程分享!

java魂斗罗_魂斗罗java源代码分享相关推荐

  1. java 正则表达式 开头_如何在Java中修复表达式的非法开头

    java 正则表达式 开头 您是否遇到过这个令人难以置信的错误,想知道如何解决它? 让我们仔细阅读一下,研究如何解决表达式Java非法开头错误. 这是一个动态错误,这意味着编译器会发现某些不符合Jav ...

  2. 重庆找Java开发工作_重庆【Java开发程序员】

    重庆[Java开发程序员],提倡一切为了学员就业的办学思想,教学过程中坚持以练习企业项目为主,让学员真正能学到技术,毕业就能适应工作岗位. 重庆[Java开发程序员], Java 编程开发.而且很多软 ...

  3. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  4. java必读书籍_必读:Java Java

    java必读书籍 他们没有在Comp Sci,工程学或MIS中教appsec,但是您却学会了编程. 而且他们可能仍然没有. 因此,您将如何得知XSS过滤器逃避或单击劫持攻击,或如何真正安全地存储密码. ...

  5. 马士兵 java 学习笔记_马士兵java教程笔记1

    ---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...

  6. A002、java环境搭建_第一个java程序

    目录 1.内容介绍 2.软件开发概述 2.1 软件开发概念 2.2 软件开发示例 2.3 软件开发语言 2.3.1 计算机语言概述 2.3.2 计算机语言分类 2.4 小结 3.Java概述 3.1 ...

  7. java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量

    cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...

  8. java 字符串乱码_这份Java面试题含答案解析竟然真的让你不用在面试上“如履薄冰”...

    面试题集共分为以下十部分: 一.Core Java: 1 - 95 题1 - 24 页 基础及语法: 1 - 61 题1 - 13 页 异常: 62 - 69 题13 - 15 页 集合: 70 - ...

  9. java console 交互_实例讲解java中Console类的用法

    java的Console类的使用方法及实例 java的Console类的使用方法及实例 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Win ...

  10. java for循环_愉快地学Java语言:第五章 循环

    导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...

最新文章

  1. springboot默认数据源如何设置连接数_spring boot基于DRUID数据源密码加密及数据源监控实现...
  2. 分布式锁的几种实现原理
  3. java运行时间间隔_Java:安排作业按时间间隔运行
  4. python获取文件夹名_python基础之获取文件目录及名称
  5. usaco2.11Ordered Fractions
  6. HTML之表单的基本知识
  7. SQLyog 使用教程
  8. 外壳IK防护等级测试
  9. 光纤通信(邱昆、王晟版)课后答案
  10. 松柏先生:参透五百年不遇的《求贤令》,何愁品牌不立!
  11. JAVA基础(43)彻底理解cookie、session、token
  12. norms matlab
  13. 初识SRC漏洞平台提交漏洞
  14. Java树状图展示的实现
  15. 计算机java相关英文文献,计算机专业 Java外文翻译 外文文献 英文文献.docx
  16. 腾讯云服务器系统盘空间不足问题
  17. C++ 性能优化篇一《优化概述》
  18. 难理解的bank conflict
  19. css股票曲线图图解,如何看懂股票曲线图,一文搞懂这些曲线所代表的含义!
  20. 用条码标签打印软件批量打印照片

热门文章

  1. 6个方法帮交互设计师与上下游顺畅合作
  2. [通信技术]Iub接口协议——专用传输信道(DCH)的用户平面协议
  3. EditText过滤特殊符号
  4. 维京小队3dm中文版|维京小队中文免安装版
  5. illegal multibyte sequence
  6. Source Insight等宽字体及对齐设置方式
  7. FedEx v20.0.7654的CData驱动程序
  8. 信息管理系统(五)战略规划与发开方法
  9. U8文件服务器备份,u8备份缓存文件在哪
  10. 从《哪吒之魔童降世》票房火爆,看国产动画产业市场化三十年