`

java版一个都不能漏游戏制作

 
阅读更多

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();

	}
}

 

制作还在进行中。。。
 

  • 大小: 88.8 KB
分享到:
评论

相关推荐

    一个利用java语言制作的简单飞机游戏.zip

    一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用java语言制作的简单飞机游戏.zip一个利用...

    java制作2048小游戏源码.rar

    Java制作的2048小游戏源码是一个非常适合初学者学习的项目,它涵盖了Java SE(标准版)的基础知识,特别是Java Swing组件库的使用。Java Swing是Java AWT(抽象窗口工具包)的扩展,提供了丰富的图形用户界面(GUI)...

    JAVA 小游戏制作

    JAVA 小游戏制作 用JAVA语言编写 很简单的一个程序

    基于JAVA制作一射击类手机游戏

    10. **测试与调试**:最后,游戏开发过程中需要进行多轮测试,确保在各种设备上都能正常运行。Android Studio提供了强大的调试工具,如Logcat用于查看日志,MonkeyRunner进行自动化测试。 通过以上技术,我们可以...

    Java制作简单RPG游戏

    在本项目"Java制作简单RPG游戏"中,开发者运用Java编程语言构建了一个具有基本角色扮演游戏(RPG)元素的程序。游戏包含了存档读档功能、双结局设定以及简单的物品栏和剧情流程,整体设计遵循了Model-View-...

    Java制作《功夫建筑工》的其中一个简单小游戏

    首先,Java是这个游戏的基石。作为一种广泛使用的高级编程语言,Java以其“一次编写,到处运行”的跨平台特性而闻名。在《功夫建筑工》的小游戏中,开发者可能使用了Java Swing或JavaFX库来创建图形用户界面(GUI)...

    java代码-使用java制作一个拼图卡通游戏的源代码

    java代码-使用java制作一个拼图卡通游戏的源代码 ——学习参考资料:仅用于个人学习使用!

    JAVA游戏制作PPT,很全面的东西

    Java游戏制作是一个涵盖广泛主题的领域,涉及到编程基础、图形渲染、用户交互、游戏逻辑等多个方面。这份"JAVA游戏制作PPT"显然提供了一个全面的学习框架,共有12个章节,下面将对这些可能涉及的知识点进行详细阐述...

    java小游戏 2048

    java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java小游戏 2048java...

    Java贪吃蛇游戏开发 制作

    【Java贪吃蛇游戏开发 制作】 贪吃蛇是一款经典的计算机游戏,它以其简单易懂的规则和无限的游戏可能性吸引了无数玩家。在Java平台上开发贪吃蛇游戏,可以让我们深入理解面向对象编程、事件处理、图形用户界面(GUI...

    一个类似超级玛丽的Java游戏

    【标题】"一个类似超级玛丽的Java游戏"揭示了这个项目是基于Java编程语言实现的一个游戏,灵感来源于经典的任天堂游戏——超级玛丽。在Java游戏中,开发者通常会利用Java的面向对象特性,创建各种游戏对象,如角色、...

    Java小游戏 netbeans自作

    【Java小游戏 netbeans自作】是一个使用NetBeans IDE开发的项目,主要涵盖了Java编程语言、图形用户界面(GUI)设计以及游戏开发的基础知识。NetBeans是Java开发者常用的集成开发环境,它提供了丰富的代码提示、自动...

    154个jar java 触屏游戏

    总结起来,"154个jar java 触屏游戏"不仅代表了一定量的游戏集合,也揭示了Java在移动游戏开发领域的应用,包括Java的基础技术、事件处理、游戏类型设计、图形动画制作、音效处理、性能优化以及兼容性测试等多个方面...

    一个JAVA做的小游戏

    这很可能是指汉诺塔(Hanoi Tower)游戏,这是一个经典的递归问题,玩家需要将一堆盘子按照大小顺序从一根柱子移动到另一根柱子,但每次只能移动最上面的一个盘子,并且任何时候大盘子都不能位于小盘子之上。...

    java小游戏源码2021版

    【Java小游戏源码2021版】是一个集合了五款经典小游戏的程序代码库,专为Java开发者设计,提供了一次深入理解游戏开发、学习Java编程语言以及实践面向对象设计的机会。这些游戏可能包括了诸如贪吃蛇、俄罗斯方块、...

    JAVA游戏大综合及各种特效

    Java 游戏开发是一个广泛的领域,涵盖了从简单的2D游戏到复杂的3D游戏的各种可能性。在"JAVA游戏大综合及各种特效"这个主题中,我们可以深入探讨Java在游戏编程中的应用,以及如何实现各种视觉效果。 一、Java游戏...

    java小游戏——森林冰火人单人版.zip

    《Java小游戏——森林冰火人单人版》是一款基于Java编程语言开发的趣味小游戏,它融合了动作、冒险和策略元素,为玩家提供了一...通过这个游戏,玩家不仅能享受娱乐,也能深入了解Java编程及其在游戏制作中的实践应用。

    Java版的植物大战僵尸游戏完整项目源码(含图片素材)

    总的来说,这个Java版的“植物大战僵尸”项目不仅提供了游戏开发的实战案例,还涵盖了Java GUI编程、多线程、动画制作、资源管理等多个核心知识点。通过深入研究和实践这个项目,开发者可以提升自己的Java编程技能,...

    java 游戏制作

    java 游戏制作,用java开放的小游戏,如贪食蛇,迷宫,俄罗斯发块等等。简单易学。

Global site tag (gtag.js) - Google Analytics