相信80、90后的小伙伴肯定在童年都有玩过一款经典的红白机游戏魂斗罗,当我们长大之后还能回忆起那些秘籍,上上下下左右左右baba,今天小千就来给大家分享一期使用Java实现魂斗罗游戏的教程,同学们赶紧去试试吧。

首先,想要魂斗罗的代码或者素材链接的同学可以在这里找到:
https://gitee.com/sunyiyi/Java-games
或者也可以直接找我们的在线老师索要即可。

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

作者:千锋java学院
链接:https://zhuanlan.zhihu.com/p/111855517
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。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() {//背包男@Overridepublic 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;//绘制背景图@Overridepublic 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() {@Overridepublic 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制作一个魂斗罗游戏相关推荐

  1. 基于java制作一个飞机小游戏(学习心得)

    emmm,第一篇博客 用了这么久的csdn,都是在观摩大佬们发帖,一只小萌新瑟瑟发抖,不敢说话,甚 至连代码也不能完全读懂.假期在b站自学(可以说是复习)了java课程,尚学堂的 2018版.链接如下 ...

  2. 【Python游戏】Python基于第三方库pygame实现一个魂斗罗小游戏,毕业设计必备 | 附源码

    前言 halo,包子们下午好 今天给打击整一个魂斗罗小游戏 很多小伙伴接触魂斗罗应该是在小时候的一个手柄游戏上面吧 我记得作为90后的我,玩这一款游戏是在小学的时候 废话不多说,直接上才艺 今天给大家 ...

  3. 推箱子游戏的java设计思路_用JAVA实现一个推箱子游戏

    技术应用 TECHNOLOGY AND MARKET Vol. 26,No. 2,2019 用 JAVA 实现一个推箱子游戏 马寅璞1,孔阳坤2 ( 1. 南京信息工程大学计算机软件学院物联网工程 1 ...

  4. android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏

    android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...

  5. 使用python开发“魂斗罗”游戏

    使用python开发"魂斗罗"游戏 开发完整的魂斗罗(Contra)游戏是一个庞大的任务,它涉及到图形渲染.物理碰撞.敌人AI.游戏关卡等多个方面.在这个简短的交互中,我将向你展示 ...

  6. (译)如何使用cocos2d来制作一个打地鼠的游戏:第一部分

    免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...

  7. (译)如何使用cocos2d制作一个塔防游戏:引子

    原文链接地址:http://www.iphonegametutorials.com/2011/04/11/cocos2d-game-tutorial-how-to-build-a-tower-defe ...

  8. python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!

    导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环 ...

  9. 如何制作一个塔防游戏 Cocos2d x 2 0 4

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文实践 ...

  10. 基于小程序制作一个猜拳小游戏

    在工作学习之余玩一会游戏既能带来快乐,还能缓解生活压力,跟随此文一起制作一个小程序游戏吧. 创建小程序 功能实现 界面优化 代码块 创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填 ...

最新文章

  1. 用C#实现抽象工厂模式
  2. 【linux】Valgrind工具集详解(一):简介
  3. python 3 输入和输出
  4. 超级寒潮考验智慧城市万亿投资
  5. 第2章-神经网络的数学基础(笔记)
  6. file_get_content和curl的性能比较
  7. poj 3678 Katu Puzzle(2-sat)
  8. 数据结构学习笔记(一)——《大话数据结构》
  9. 用jdbc连接oracle的第一次经历
  10. emqx http not found 怎么回事_幽默笑话:行倒是行,但两个大男人这么说话算怎么回事...
  11. Object类解析(简)
  12. mysql写php木马_PHP一句话木马小总结与SQL语句写一句话木马
  13. cad二次开发程序的绿色安装
  14. LeetCode 34 Search for a Range(搜索范围)
  15. Ubuntu切换阿里源
  16. 随笔--你该如何利用自己的“暗时间”?
  17. 计算机中mac地址是什么意思,mac地址在计算机什么上
  18. 深入理解Attention及变种(二)
  19. 高中数学立体几何证明套路高考试题(附答案)
  20. Web前端——什么是web前端,什么是HTML及其常用标签

热门文章

  1. 《朱生豪情书全集》【手稿珍藏本】 梦中不识路,何以慰相思
  2. ajax的state,ajax 中readystate一直为1
  3. CryEngine ViewMat
  4. 2021 Anomaly Detection (李宏毅
  5. 设置hr标签的粗细及颜色
  6. 电脑使用小常识(4):让win10强制更新棍淡
  7. warpaffine 旋转有一部分消失_OpenCV warpAffine的天坑
  8. 实现发送Http请求的两种方法
  9. 服务器系统信息查询命令
  10. win 10简繁体切换快捷键