java版一个都不能漏游戏制作
本人花了一天时间,总算是初步完成了自己想要实现的一个游戏,java版一个都不能漏游戏。现在还处于初步制作和测试阶段,今后如有升级,会在这篇博客中修改。下面是代码和截图:
package ctong; import java.applet.Applet; import java.applet.AudioClip; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.io.File; import java.security.acl.Group; import java.util.Random; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JRootPane; import javax.swing.JTextField; public class Game extends JFrame{ private AudioClip clip; private JRadioButton easy,normal,hard; private static int x=0,y1=0,y2=0,y3=0,k=0,t=0,add=2,i =3; private static JTextField jt1 = new JTextField("0"),jt2 = new JTextField("0");; private JPanel center; private static ImageIcon bjicon=new ImageIcon("123.jpg"); private boolean flag=true; public Game(){ this.setTitle("一个都不能漏"); this.setSize(620, 600); this.setLocationRelativeTo(null); this.setResizable(false); this.setDefaultCloseOperation(3); this.setFocusableWindowState(true); center = new JPanel(); center.setBackground(Color.WHITE); center.addMouseListener(new MouseListener() { public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub int X=e.getX(); int Y=e.getY(); if(x<X&&X<x+bjicon.getIconWidth()&&y1<Y&&Y<y1+bjicon.getIconHeight()){ y1=-2*bjicon.getIconHeight(); t+=add; jt2.setText(t+""); } if(x+bjicon.getIconWidth()<X&&X<x+2*bjicon.getIconWidth()&&y2<Y&&Y<y2+bjicon.getIconHeight()){ y2=-2*bjicon.getIconHeight(); t+=add; jt2.setText(t+""); } if(x+2*bjicon.getIconWidth()<X&&X<x+3*bjicon.getIconWidth()&&y3<Y&&Y<y3+bjicon.getIconHeight()){ y3=-2*bjicon.getIconHeight(); t+=add; jt2.setText(t+""); } } public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub // JOptionPane.showMessageDialog(null, "游戏结束!"); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } }); JPanel east = createPanel(); this.add(center,BorderLayout.CENTER); this.add(east,BorderLayout.EAST); this.setIconImage(new ImageIcon("123.jpg").getImage()); this.setUndecorated(true); this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME); this.setVisible(true); } //现在模拟的图层上绘制好图片 public void drawpic1(Graphics g){ //新建一个模拟图层对象 BufferedImage buim=new BufferedImage(center.getWidth()/3,center.getHeight(),BufferedImage.TYPE_INT_RGB); Graphics gg=buim.getGraphics(); gg.fillRect(0, 0, center.getWidth(), center.getHeight()); //使图片移动 gg.drawImage(bjicon.getImage(), x, y1, null); y1+=new Random().nextInt(i)+3; if(y1-5*bjicon.getIconHeight() >= 0){ y1 = -bjicon.getIconHeight(); jt2.setText(--t+""); JOptionPane.showMessageDialog(null, "游戏结束!所花时间为:"+k+"得分为:"+t); System.exit(0); } if(t>50&&t<=100){ bjicon = new ImageIcon("789.png"); } if(100<t&&t<=200){ bjicon = new ImageIcon("456.jpg"); } if(200<t&&t<=400){ bjicon = new ImageIcon("123.png"); } if(400<t&&t<800){ bjicon = new ImageIcon("456.png"); } if(1000<t){ bjicon = new ImageIcon("111.png"); } //将模拟图层上的图像绘制到中间面板的画布上 g.drawImage(buim, 0, 0, null); } //现在模拟的图层上绘制好图片 public void drawpic2(Graphics g){ //新建一个模拟图层对象 BufferedImage buim=new BufferedImage(center.getWidth()/3,center.getHeight(),BufferedImage.TYPE_INT_RGB); Graphics gg=buim.getGraphics(); gg.fillRect(0, 0, center.getWidth(), center.getHeight()); //使图片移动 gg.drawImage(bjicon.getImage(), x, y2, null); y2+=new Random().nextInt(i)+3; if(y2-5*bjicon.getIconHeight() >= 0){ y2 = -bjicon.getIconHeight(); jt2.setText(--t+""); JOptionPane.showMessageDialog(null, "游戏结束!所花时间为:"+k+"得分为:"+t); System.exit(0); } //将模拟图层上的图像绘制到中间面板的画布上 g.drawImage(buim, bjicon.getIconWidth(), 0, null); } //现在模拟的图层上绘制好图片 public void drawpic3(Graphics g){ //新建一个模拟图层对象 BufferedImage buim=new BufferedImage(center.getWidth()/3,center.getHeight(),BufferedImage.TYPE_INT_RGB); Graphics gg=buim.getGraphics(); gg.fillRect(0, 0, center.getWidth(), center.getHeight()); //使图片移动 gg.drawImage(bjicon.getImage(), x, y3, null); y3+=new Random().nextInt(i)+3; if(y3-5*bjicon.getIconHeight() >= 0){ y3 = -bjicon.getIconHeight(); jt2.setText(--t+""); JOptionPane.showMessageDialog(null, "游戏结束!所花时间为:"+k+"得分为:"+t); System.exit(0); } //将模拟图层上的图像绘制到中间面板的画布上 g.drawImage(buim, 2*bjicon.getIconWidth(), 0, null); } public JPanel createPanel(){ JPanel jpa = new JPanel(new BorderLayout()); JPanel jp1 = new JPanel(new GridLayout(7,1)); JPanel jp2 = new JPanel(new GridLayout(2,2)); JButton start = new JButton("开始游戏"); final JButton help = new JButton("帮助"); easy = new JRadioButton("简单",true); normal = new JRadioButton("中等"); hard = new JRadioButton("困难"); ButtonGroup group = new ButtonGroup(); group.add(easy); group.add(normal); group.add(hard); JCheckBox music = new JCheckBox("声音(ALT+1)"); start.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Thread mt1 = new Thread(new Runnable() { public void run() { while(true){ try{ Thread.sleep(10); }catch (InterruptedException ex){ ex.printStackTrace(); } drawpic1(center.getGraphics()); } } }); mt1.start(); Thread mt2 = new Thread(new Runnable() { public void run() { while(true){ try{ Thread.sleep(10); }catch (InterruptedException ex){ ex.printStackTrace(); } drawpic2(center.getGraphics()); } } }); mt2.start(); Thread mt3 = new Thread(new Runnable() { public void run() { while(true){ try{ Thread.sleep(10); }catch (InterruptedException ex){ ex.printStackTrace(); } drawpic3(center.getGraphics()); } } }); mt3.start(); Thread tt = new Thread(new Runnable() { public void run() { // TODO Auto-generated method stub while(flag){ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } jt1.setText(++k+""); }} }); tt.start(); } }); help.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "单击图片使图片不落下去,不同的难度获取不同分数,分数越高可以解锁更多图片!"); } }); easy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { i=3; add=2; } }); normal.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { i=6; add=4; } }); hard.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { i=9; add=8; } }); music.setMnemonic(KeyEvent.VK_1);//快捷键ALT+1 //监听声音 music.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if(e.getStateChange()==1){ try { File f =new File("2.wav"); clip=Applet.newAudioClip(f.toURL()); clip.loop(); }catch (Exception ex) { ex.printStackTrace(); } } else clip.stop(); } }); jp1.add(start); jp1.add(help); jp1.add(easy); jp1.add(normal); jp1.add(hard); jp1.add(music); JLabel jla1 = new JLabel("时间:",JLabel.CENTER); JLabel jla2 = new JLabel("得分:",JLabel.CENTER); jt1.setEditable(false); jt2.setEditable(false); jp2.add(jla1); jp2.add(jt1); jp2.add(jla2); jp2.add(jt2); jpa.add(jp1,BorderLayout.NORTH); jpa.add(jp2,BorderLayout.SOUTH); jpa.setBorder(BorderFactory.createTitledBorder("系统控制区")); jpa.setCursor(new Cursor(12)); return jpa; } public static void main(String[] args) { new Game(); } }
制作还在进行中。。。
相关推荐
一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用...
Java制作的2048小游戏源码是一个非常适合初学者学习的项目,它涵盖了Java SE(标准版)的基础知识,特别是Java Swing组件库的使用。Java Swing是Java AWT(抽象窗口工具包)的扩展,提供了丰富的图形用户界面(GUI)...
JAVA 小游戏制作 用JAVA语言编写 很简单的一个程序
10. **测试与调试**:最后,游戏开发过程中需要进行多轮测试,确保在各种设备上都能正常运行。Android Studio提供了强大的调试工具,如Logcat用于查看日志,MonkeyRunner进行自动化测试。 通过以上技术,我们可以...
在本项目"Java制作简单RPG游戏"中,开发者运用Java编程语言构建了一个具有基本角色扮演游戏(RPG)元素的程序。游戏包含了存档读档功能、双结局设定以及简单的物品栏和剧情流程,整体设计遵循了Model-View-...
首先,Java是这个游戏的基石。作为一种广泛使用的高级编程语言,Java以其“一次编写,到处运行”的跨平台特性而闻名。在《功夫建筑工》的小游戏中,开发者可能使用了Java Swing或JavaFX库来创建图形用户界面(GUI)...
java代码-使用java制作一个拼图卡通游戏的源代码 ——学习参考资料:仅用于个人学习使用!
Java游戏制作是一个涵盖广泛主题的领域,涉及到编程基础、图形渲染、用户交互、游戏逻辑等多个方面。这份"JAVA游戏制作PPT"显然提供了一个全面的学习框架,共有12个章节,下面将对这些可能涉及的知识点进行详细阐述...
java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java...
【Java贪吃蛇游戏开发 制作】 贪吃蛇是一款经典的计算机游戏,它以其简单易懂的规则和无限的游戏可能性吸引了无数玩家。在Java平台上开发贪吃蛇游戏,可以让我们深入理解面向对象编程、事件处理、图形用户界面(GUI...
【标题】"一个类似超级玛丽的Java游戏"揭示了这个项目是基于Java编程语言实现的一个游戏,灵感来源于经典的任天堂游戏——超级玛丽。在Java游戏中,开发者通常会利用Java的面向对象特性,创建各种游戏对象,如角色、...
【Java小游戏 netbeans自作】是一个使用NetBeans IDE开发的项目,主要涵盖了Java编程语言、图形用户界面(GUI)设计以及游戏开发的基础知识。NetBeans是Java开发者常用的集成开发环境,它提供了丰富的代码提示、自动...
总结起来,"154个jar java 触屏游戏"不仅代表了一定量的游戏集合,也揭示了Java在移动游戏开发领域的应用,包括Java的基础技术、事件处理、游戏类型设计、图形动画制作、音效处理、性能优化以及兼容性测试等多个方面...
这很可能是指汉诺塔(Hanoi Tower)游戏,这是一个经典的递归问题,玩家需要将一堆盘子按照大小顺序从一根柱子移动到另一根柱子,但每次只能移动最上面的一个盘子,并且任何时候大盘子都不能位于小盘子之上。...
【Java小游戏源码2021版】是一个集合了五款经典小游戏的程序代码库,专为Java开发者设计,提供了一次深入理解游戏开发、学习Java编程语言以及实践面向对象设计的机会。这些游戏可能包括了诸如贪吃蛇、俄罗斯方块、...
Java 游戏开发是一个广泛的领域,涵盖了从简单的2D游戏到复杂的3D游戏的各种可能性。在"JAVA游戏大综合及各种特效"这个主题中,我们可以深入探讨Java在游戏编程中的应用,以及如何实现各种视觉效果。 一、Java游戏...
《Java小游戏——森林冰火人单人版》是一款基于Java编程语言开发的趣味小游戏,它融合了动作、冒险和策略元素,为玩家提供了一...通过这个游戏,玩家不仅能享受娱乐,也能深入了解Java编程及其在游戏制作中的实践应用。
总的来说,这个Java版的“植物大战僵尸”项目不仅提供了游戏开发的实战案例,还涵盖了Java GUI编程、多线程、动画制作、资源管理等多个核心知识点。通过深入研究和实践这个项目,开发者可以提升自己的Java编程技能,...
java 游戏制作,用java开放的小游戏,如贪食蛇,迷宫,俄罗斯发块等等。简单易学。