`

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
分享到:
评论

相关推荐

    神奇宝贝(PokemonGo)基于Jetpack+MVVM+Repository设计模式+Data.zip

    神奇宝贝(PokemonGo)基于Jetpack+MVVM+Repository设计模式+Data

    用于试用 Dev Containers 的 Python 示例项目.zip

    用于试用 Dev Containers 的 Python 示例项目试用开发容器Python开发容器是一个具有明确定义的工具/运行时堆栈及其先决条件的运行容器。您可以使用GitHub Codespaces或Visual Studio Code Dev Containers试用开发容器。这是一个示例项目,您可以通过几个简单的步骤尝试任一选项。我们还有各种其他vscode-remote-try-*示例项目。注意如果您已经有代码空间或开发容器,则可以跳至“要尝试的事情”部分。设置开发容器GitHub Codespaces请按照以下步骤在 Codespace 中打开此示例单击代码下拉菜单。单击Codespaces选项卡。单击主屏幕上的“创建代码空间”。有关创建代码空间的更多信息,请访问GitHub 文档。VS Code 开发容器如果您已安装 VS Code 和 Docker,则可以单击上方或此处的徽章开始使用。单击这些链接将导致 VS Code 根据需要自动安装 Dev Containers 扩展,将源代码克隆到容器卷中,并启动开发容器以供使用。按

    springboot vue3前后端分离.zip

    springboot vue3前后端分离

    数学建模-神经网络算法 lecture 11 线性随机系统辨识示例 共9页.pptx

    数学建模-神经网络算法 lecture 11 线性随机系统辨识示例 共9页.pptx

    优质粳稻生产技术规程.docx

    优质粳稻生产技术规程.docx

    所有算法均在 Python 3 中实现,是 hacktoberfest2020 的一个项目 - 没有针对 hacktoberfest 2021 的问题或 PR.zip

    算法 - Python 目录灵感与动力贡献指南从这里开始所有算法均用 Python 3 实现(用于教育)这些实现仅用于学习目的。如果您想贡献更有效的解决方案,请随时打开问题并提交您的解决方案。灵感你可以在LeetCode 算法中寻找要实现的算法若要贡献,请确保算法尚未提交!请确保在您的 PR 中添加问题编号。贡献指南文件夹和文件请确保你的文件位于 -Folder 中LeetCode,并且命名如下 0001_TwoSum.py-> LeetCode 问题的 4 位数字、下划线、LeetCodeName开放问题当您打开问题时,请确保问题尚未实现(查看代码/Leetcode 以获取问题编号)。现有问题打开的问题将被关闭,并且对此问题的 PR 被标记为垃圾邮件 。打开问题的贡献者将被优先分配到该问题。如果大约 7 天内没有 PR,则问题将分配给另一个贡献者。拉取请求只有与问题相结合并符合命名约定(参见文件夹和文件)的 Pull 请求才会被合并!如果 PR 中没有加入问题,您的 PR 将被标记为垃圾邮件并关闭。如果您的代码未通

    用于接收和交互来自 Slack 的 RTM API 的事件的框架.zip

    用于接收和交互来自 Slack 的 RTM API 的事件的框架python-rtmbot此项目不再处于积极开发阶段。如果您刚刚开始,我们建议您先查看Python SDK。如果您一直在使用此项目,我们只会解决关键问题(例如安全问题),但我们建议您计划迁移到 Python SDK。您仍然可以提交问题并向我们寻求帮助! 如果您有兴趣在未来维护此软件包,请联系我们 一个用 Python 编写的 Slack 机器人,通过 RTM API 连接。Python-rtmbot 是一个机器人引擎。任何了解Slack API和 Python的人都应该熟悉插件架构。配置文件格式为 YAML。该项目目前处于 1.0 之前的版本。因此,您应该计划不时进行重大更改。对于任何重大更改,我们将在 1.0 之前的版本中调整次要版本。(例如 0.2.4 -> 0.3.0 意味着重大更改)。如果稳定性很重要,您可能希望锁定特定的次要版本)与 webhook 的一些区别不需要网络服务器来接收消息可以回复用户的直接消息以 Slack 用户(或机器人)身份登录机器人用户必须被邀请加入频道

    基于django的音乐推荐系统.zip

    基于django的音乐推荐系统.zip

    北京理工大学<Python机器学习应用>超详细学习笔记和代码注释(未完待续).zip

    北京理工大学<Python机器学习应用>超详细学习笔记和代码注释(未完待续)

    kernel-5.15-rc7.zip

    kernel-5.15-rc7.zip

    神经网络-DenseNet网络结构

    神经网络-DenseNet网络结构

    rbac组件(基于角色的权限控制).zip

    rbac组件(基于角色的权限控制)

    C++ Vigenère 密码(解密代码)

    C++ Vigenère 密码(解密代码)

    数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 杭州消防设置-对杭州市消防局设置的研究 共8页.pdf

    数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 杭州消防设置-对杭州市消防局设置的研究 共8页.pdf

    老年用品产品推广目录分类表.docx

    老年用品产品推广目录分类表.docx

    毕设源码-基于Python的期货程序化交易系统的设计与实现_jhypi-期末大作业+说明文档.rar

    本项目是基于Python的期货程序化交易系统的设计与实现,旨在为计算机相关专业学生提供一个实践性强、贴近实际应用场景的项目案例。通过这一项目,学生们能够深入了解程序化交易的基本原理和实现方法,同时锻炼自身的编程技能、数据分析能力以及金融市场的洞察力。 项目的主要功能包括:自动收集和处理市场数据、基于预设策略进行交易决策、实时执行交易指令、监控交易风险以及生成详细的交易报告。系统采用模块化设计,主要包括数据采集模块、策略执行模块、交易执行模块和风险管理模块,各个模块之间通过明确的接口进行交互。项目采用的编程语言为Python,利用其强大的数据处理库和机器学习库,保证了系统的灵活性和扩展性。开发这一项目的目的是让学生们在实践中学习和掌握程序化交易的核心技术,提升其在金融科技领域的就业竞争力。

    基于java的校园失物招领平台设计与实现.docx

    基于java的校园失物招领平台设计与实现.docx

    Javascript Ninja 课程.zip

    Javascript Ninja 课程JavaScript Ninja 课程Inscreva-se agora mesmo e ganhe 10% de desconto!Como tirar dúvidas sobre 或 conteúdo do curso访问问题页面Pesquise nas发出abertas e fechadas, se a mesma dúvida já foi postadaSe não foi, crie uma nova issues , coloque um titulo que tenha a ver com a sua dúvida, e descreva-a com o maior nível detalhes possíveis, para que possamos te ajudar:)摘要Veja o sumário completo do curso aqui。赞同!:D

    通过示例在 Python 中解释 SOLID 原则 .zip

    solid.python通过示例在 Python 中解释SOLID 原则。单一职责原则开放/封闭原则里氏替换原则接口隔离原则依赖倒置原则

    公交信息在线查询系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程.zip

    公交信息在线查询系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程 项目启动教程:https://www.bilibili.com/video/BV1BfB2YYEnS

Global site tag (gtag.js) - Google Analytics