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

	}
}

 

制作还在进行中。。。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值