我的俄罗斯方块v1.2

     之前写的俄罗斯方块有很大的不足,这次我添加了方块方向变换,背景音乐,游戏暂停的功能,以及修复之前的一些BUG,基本上能够正常游戏,方块的变换我没有使用图片的旋转,而是直接重新贴图,但是还是达到了效果。完成了我的第一个游戏。

 

修改添加部分代码:

MediaPlayer player=new MediaPlayer();
if (arg0.getKeyCode() == KeyEvent.VK_RIGHT) {

					if (isFalling)
						switch (index) {
						case 0:
							if (x < 300 && gamePanel.map.isCovered(x + 50, y)
									&& gamePanel.map.isCovered(x + 50, y + 25))
								x += 25;
							break;
						case 1:
							if (x < 250 && gamePanel.map.isCovered(x + 100, y))
								x += 25;
							break;
						case 2:
							if (x < 300 && gamePanel.map.isCovered(x + 25, y)
									&& gamePanel.map.isCovered(x + 25, y + 25)
									&& gamePanel.map.isCovered(x + 25, y + 50))
								x += 25;
							break;
						case 3:
							if (x < 300 && gamePanel.map.isCovered(x + 25, y)
									&& gamePanel.map.isCovered(x + 50, y + 25)
									&& gamePanel.map.isCovered(x + 50, y + 50))
								x += 25;
							break;
						case 4:
							if (x < 325 && gamePanel.map.isCovered(x + 25, y)
									&& gamePanel.map.isCovered(x + 25, y + 25)
									&& gamePanel.map.isCovered(x + 25, y + 50)
									&& gamePanel.map.isCovered(x + 25, y + 75))
								x += 25;
							break;
						case 5:
							if (x < 275 && gamePanel.map.isCovered(x + 50, y)
									&& gamePanel.map.isCovered(x + 75, y + 25))
								x += 25;
							break;
						case 6:
							if (x < 300 && gamePanel.map.isCovered(x + 25, y)
									&& gamePanel.map.isCovered(x + 50, y + 25)
									&& gamePanel.map.isCovered(x + 25, y + 50))
								x += 25;
							break;
						case 7:
							if (x < 275 && gamePanel.map.isCovered(x + 75, y)
									&& gamePanel.map.isCovered(x + 50, y + 25))
								x += 25;
							break;
						case 8:
							if (x < 275 && gamePanel.map.isCovered(x + 75, y)
									&& gamePanel.map.isCovered(x + 50, y + 25))
								x += 25;
							break;
						default:
							break;
						}
				}
				if (arg0.getKeyCode() == KeyEvent.VK_LEFT) {
					if (isFalling)
						if (x > 0)
							switch (index) {
							case 0:
								if (gamePanel.map.isCovered(x - 25, y)
										&& gamePanel.map.isCovered(x - 25,
												y + 25))
									x -= 25;
								break;
							case 1:
								if (gamePanel.map.isCovered(x-25 , y))
									x -= 25;
								break;
							case 2:
								if (gamePanel.map.isCovered(x , y)
										&& gamePanel.map.isCovered(x - 25,y + 25)
										&& gamePanel.map.isCovered(x ,y + 50))
									x -= 25;
								break;
							case 3:
								if (gamePanel.map.isCovered(x -25, y)
										&& gamePanel.map.isCovered(x - 25,y + 25)
										&& gamePanel.map.isCovered(x ,y + 50))
									x -= 25;
								break;
							case 4:
								if (gamePanel.map.isCovered(x-25 , y)
										&& gamePanel.map.isCovered(x - 25,y + 25)
										&& gamePanel.map.isCovered(x-25 ,y + 50)
										&& gamePanel.map.isCovered(x - 25,y + 75))
									x -= 25;
								break;
							case 5:
								if (gamePanel.map.isCovered(x , y)
										&& gamePanel.map.isCovered(x - 25,y + 25))
									x -= 25;
								break;
							case 6:
								if (gamePanel.map.isCovered(x-25 , y)
										&& gamePanel.map.isCovered(x - 25,y + 25)
										&& gamePanel.map.isCovered(x -25,y + 50))
									x -= 25;
								break;
							case 7:
								if (gamePanel.map.isCovered(x-25 , y)
										&& gamePanel.map.isCovered(x ,y + 25) )
									x -= 25;
								break;
							case 8:
								if (gamePanel.map.isCovered(x , y)
										&& gamePanel.map.isCovered(x - 25,y + 25))
									x -= 25;
								break;

							default:
								break;
							}
				}
private void Music(){
		List<String> path = new ArrayList<String>();
		path.add("src/funky_theme.mp3"); 
		PlayerMusic play = new PlayerMusic(path);
		play.start();  
	}

private void setLabel() {
		switch (index) {
		case 0:
			newlabel.setIcon(Cube);
			newlabel.setBounds(x, y, 50, 50);
			break;
		case 1:
			newlabel.setIcon(Strinp);
			newlabel.setBounds(x, y, 100, 25);
			break;
		case 2:
			newlabel.setIcon(TuImage);
			newlabel.setBounds(x, y, 25, 75);
			break;
		case 3:
			newlabel.setIcon(xImage);
			newlabel.setBounds(x, y, 50, 75);
			break;
		case 4:
			newlabel.setIcon(Strinp_1);
			newlabel.setBounds(x, y, 25, 100);
			break;
		case 5:
			newlabel.setIcon(TuImage_1);
			newlabel.setBounds(x, y, 75, 50);
			break;
		case 6:
			newlabel.setIcon(TuImage_2);
			newlabel.setBounds(x, y, 50, 75);
			break;
		case 7:
			newlabel.setIcon(TuImage_3);
			newlabel.setBounds(x, y, 75, 20);
			break;
		case 8:
			newlabel.setIcon(xImage_1);
			newlabel.setBounds(x, y, 75, 50);
			break;
		default:
			break;
		}
	}


 

package com.Tetris;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;

public class PlayerMusic implements ControllerListener {
	// 播放对象
	private Player player; 
	private List<String> mp3List;
	// 当前MP3文件数量
	private int mp3NO = 0;
	PlayerMusic(List<String> mp3List) {
		this.mp3List = mp3List;
	}

	// 播放方法
	public void start() {
		try {
			player = Manager.createPlayer(new File(mp3List.get(mp3NO)).toURI()
					.toURL());
		} catch (NoPlayerException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
			System.out.println("不能播放此文件!");
			return;
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
			return;
		}
		if (player == null) {
			System.out.println("播放文件为空!");
			return;
		}
		player.addControllerListener(this);
		// 提取媒体内容
		player.prefetch();
	}

	public void controllerUpdate(ControllerEvent e) {
		// 当媒体播放结束时,循环播放
		if (e instanceof EndOfMediaEvent) {
			this.start();
			return;
		}
		// 当提取媒体的内容结束
		if (e instanceof PrefetchCompleteEvent) {
			System.out.println("内容结束");
			player.start();
			return;
		}
		// 当实例化后
		if (e instanceof RealizeCompleteEvent) {
			System.out.println("实例化");
			// pack(); //执行pack()操作
			return;
		}
	}

	 
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值