使用Java制作一个魂斗罗游戏
相信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制作一个魂斗罗游戏相关推荐
- 基于java制作一个飞机小游戏(学习心得)
emmm,第一篇博客 用了这么久的csdn,都是在观摩大佬们发帖,一只小萌新瑟瑟发抖,不敢说话,甚 至连代码也不能完全读懂.假期在b站自学(可以说是复习)了java课程,尚学堂的 2018版.链接如下 ...
- 【Python游戏】Python基于第三方库pygame实现一个魂斗罗小游戏,毕业设计必备 | 附源码
前言 halo,包子们下午好 今天给打击整一个魂斗罗小游戏 很多小伙伴接触魂斗罗应该是在小时候的一个手柄游戏上面吧 我记得作为90后的我,玩这一款游戏是在小学的时候 废话不多说,直接上才艺 今天给大家 ...
- 推箱子游戏的java设计思路_用JAVA实现一个推箱子游戏
技术应用 TECHNOLOGY AND MARKET Vol. 26,No. 2,2019 用 JAVA 实现一个推箱子游戏 马寅璞1,孔阳坤2 ( 1. 南京信息工程大学计算机软件学院物联网工程 1 ...
- android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏
android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...
- 使用python开发“魂斗罗”游戏
使用python开发"魂斗罗"游戏 开发完整的魂斗罗(Contra)游戏是一个庞大的任务,它涉及到图形渲染.物理碰撞.敌人AI.游戏关卡等多个方面.在这个简短的交互中,我将向你展示 ...
- (译)如何使用cocos2d来制作一个打地鼠的游戏:第一部分
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
- (译)如何使用cocos2d制作一个塔防游戏:引子
原文链接地址:http://www.iphonegametutorials.com/2011/04/11/cocos2d-game-tutorial-how-to-build-a-tower-defe ...
- python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!
导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环 ...
- 如何制作一个塔防游戏 Cocos2d x 2 0 4
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文实践 ...
- 基于小程序制作一个猜拳小游戏
在工作学习之余玩一会游戏既能带来快乐,还能缓解生活压力,跟随此文一起制作一个小程序游戏吧. 创建小程序 功能实现 界面优化 代码块 创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填 ...
最新文章
- 用C#实现抽象工厂模式
- 【linux】Valgrind工具集详解(一):简介
- python 3 输入和输出
- 超级寒潮考验智慧城市万亿投资
- 第2章-神经网络的数学基础(笔记)
- file_get_content和curl的性能比较
- poj 3678 Katu Puzzle(2-sat)
- 数据结构学习笔记(一)——《大话数据结构》
- 用jdbc连接oracle的第一次经历
- emqx http not found 怎么回事_幽默笑话:行倒是行,但两个大男人这么说话算怎么回事...
- Object类解析(简)
- mysql写php木马_PHP一句话木马小总结与SQL语句写一句话木马
- cad二次开发程序的绿色安装
- LeetCode 34 Search for a Range(搜索范围)
- Ubuntu切换阿里源
- 随笔--你该如何利用自己的“暗时间”?
- 计算机中mac地址是什么意思,mac地址在计算机什么上
- 深入理解Attention及变种(二)
- 高中数学立体几何证明套路高考试题(附答案)
- Web前端——什么是web前端,什么是HTML及其常用标签