?? panel.java~460~
字號(hào):
package diamonds3;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import java.lang.Thread;
import java.util.Random;
import java.applet.Applet;
import java.applet.AudioClip;
import javax.swing.*;
import java.awt.*;
import java.net.*;
import java.awt.event.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Panel extends JPanel {
//******
int level;
DownThread downThread = new DownThread();
// MoveThread moveThread= new MoveThread();
int result=0;
int clearCount=0;
Block shape[][] = new Block[7][4];
Block block[] = new Block[4];
boolean reachBelow = true;
boolean lose = false;
boolean pause=true;
boolean isRun=false;
boolean player2=false;
Panel panel2;
int VSline=0;
int VSID=1;
//********************
URL file1 = getClass().getResource("sound.mid");
AudioClip sound = Applet.newAudioClip(file1);
AudioClip play = sound;
URL file2 = getClass().getResource("soundClear1.wav");
AudioClip sound2 = Applet.newAudioClip(file2);
AudioClip play2 = sound2;
URL file3 = getClass().getResource("soundDown.wav");
AudioClip sound3 = Applet.newAudioClip(file2);
AudioClip play3 = sound3;
int playerNum=1;
//*******************************
// KeyEvent key=new KeyEvent(this, focusOwner, e);
int size=28;
Random random=new Random();
boolean downBelow=false;
int currentBlockID;
int Fill[][] = new int[11][17];//9*12
int FillSmall[][]=new int[4][4];//4*4
boolean begin;
//******
public Panel() {
this.format();
}
public void format(){
VSline=0;
clearCount=0;
size=28;
result = 0;
reachBelow = true;
lose = false;
// KeyEvent key=new KeyEvent(this, focusOwner, e);
random = new Random();
downBelow = false;
for (int i = 0; i < 4; i++) {
block[i] = new Block();
}
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 4; j++) {
shape[i][j] = new Block();
}
}
level = 5;
//田
shape[0][0].setBlock(140, 20, 4);
shape[0][1].setBlock(140, 40, 4);
shape[0][2].setBlock(160, 20, 4);
shape[0][3].setBlock(160, 40, 4);
//----
shape[1][0].setBlock(140, -20, 3);
shape[1][1].setBlock(140, 0, 3);
shape[1][2].setBlock(140, 20, 3);
shape[1][3].setBlock(140, 40, 3);
//土
shape[2][0].setBlock(140, 20, 2);
shape[2][1].setBlock(120, 40, 2);
shape[2][2].setBlock(140, 40, 2);
shape[2][3].setBlock(160, 40, 2);
//|--
shape[3][0].setBlock(140, 40, 1);
shape[3][1].setBlock(140, 20, 1);
shape[3][2].setBlock(160, 20, 1);
shape[3][3].setBlock(180, 20, 1);
//--|
shape[4][0].setBlock(180, 40, 5);
shape[4][1].setBlock(180, 20, 5);
shape[4][2].setBlock(160, 20, 5);
shape[4][3].setBlock(140, 20, 5);
//Z
shape[5][0].setBlock(140, 20, 6);
shape[5][1].setBlock(160, 20, 6);
shape[5][2].setBlock(160, 40, 6);
shape[5][3].setBlock(180, 40, 6);
//S
shape[6][0].setBlock(180, 20, 7);
shape[6][1].setBlock(160, 20, 7);
shape[6][2].setBlock(160, 40, 7);
shape[6][3].setBlock(140, 40, 7);
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 16; j++)
{
if (i != 0 && i != 10)
Fill[i][j] = 0;
else
Fill[i][j]=1;
}
Fill[i][16] = 1;
}
begin=true;
downThread.NextViewFormat();
repaint();
//*******************
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Color getColor(int i) {
if (i == 0)
return Color.darkGray;
if (i == 1)
return Color.BLUE;
if (i == 2)
return Color.cyan;
if (i == 3)
return Color.GREEN;
if (i == 4)
return Color.white;
if (i == 5)
return Color.yellow;
if (i == 6)
return Color.RED;
else
return Color.LIGHT_GRAY;
}
public void paint(Graphics g) {
super.paintComponent(g);
/* try {
g.setColor(Color.BLACK);
g.drawString("玩家1", 10, 20);
g.drawString("游戲等級(jí):", 10, 40);
g.drawString("當(dāng)前得分:", 10, 80);
g.drawString("下一個(gè):", 10, 120);
g.setColor(Color.darkGray);
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
g.setColor(getColor(FillSmall[i][j]));
g.fill3DRect(12 + 10 * i, 130 + 10 * j, 10, 10, true);
}
}
for (i = 1; i < 10; i++) {
for (j = 4; j < 16; j++) {
g.setColor(getColor(Fill[i][j]));
g.fill3DRect(80 + size * i, -60 + size * j, size, size, true);
}
}
} catch (Exception ex) {
}
*/
try {
g.setColor(Color.BLACK);
g.drawString("玩家"+VSID, 10, 20);
g.drawString("游戲等級(jí):", 10, 40);
g.setColor(Color.lightGray);
g.fillRect(10,45,50,20);
g.setColor(Color.BLACK);
g.drawString(" "+level, 10, 60);
g.drawString("當(dāng)前得分:", 10, 80);
g.setColor(Color.lightGray);
g.fillRect(10,85,50,20);
g.setColor(Color.BLACK);
g.drawString(" "+result, 10, 100);
g.drawString("下一個(gè):", 10, 120);
g.setColor(Color.darkGray);
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
g.setColor(getColor(FillSmall[i][j]));
g.fill3DRect(12 + 10 * i, 130 + 10 * j, 10, 10, true);
}
}
for (i = 1; i < 10; i++) {
for (j = 4; j < 16; j++) {
g.setColor(getColor(Fill[i][j]));
g.fill3DRect(80 + size * i, -60 + size * j, size, size, true);
}
}
} catch (Exception ex) {
}
}
public void VS()
{
VSline++;
// this.Pause();
for (int j = 4; j < 15; j++)
for (int i = 1; i < 10; i++)
Fill[i][j] = Fill[i][j + 1];
for (int k = 1; k < 10; k++) {
if (k % 2 == VSline % 2)
Fill[k][15] = 7;
else
Fill[k][15]=0;
}
block[i].y-=20;
repaint();
// this.start();
}
public void Clear(Panel panel2,boolean player2)
{
int cent=20*level;
for (int j = 4; j < 16; j++) {
int count = 0;
for (int i = 1; i < 10; i++) {
if (Fill[i][j] != 0)
count++;
}
if (count == 9)
{play2.play();
if(player2)
panel2.VS();
clearCount++;
result += cent;
cent+=20*level;
for (int kk = j; kk >0; kk--)
for (int k = 0; k < 10; k++)
Fill[k][kk]=Fill[k][kk-1];
}
}
repaint();
if(clearCount==20)
{System.out.println(clearCount);
level++;
clearCount=0;
}
}
public void blockUp(Block block[]) {
Block NewBlock[]=new Block[4];
int center;
for (int i = 0; i < 4; i++) {
NewBlock[i] = new Block();
NewBlock[i].setBlock(block[i]);
}
if (currentBlockID == 0) { //田, ----
} else if (currentBlockID == 1) { //----
center=1;
Switch(block,NewBlock,center);
} else if (currentBlockID == 2) {//土
center=2;
Switch(block,NewBlock,center);
} else if (currentBlockID == 3) {//|--
center=2;
Switch(block,NewBlock,center);
}
else if (currentBlockID == 4) {//--|
center=2;
Switch(block,NewBlock,center);
}
else if (currentBlockID == 5) {//Z
center=2;
Switch(block,NewBlock,center);
}
else if (currentBlockID == 6) {//S
center=2;
Switch(block,NewBlock,center);
}
boolean CanSwitch=true;
boolean count=true;
for (int j = 0; j < 4; j++) {
try{
if (Fill[NewBlock[j].getI(this)][NewBlock[j].getJ(this)] != 0) {
count = false;
for (int i = 0; i < 4; i++) {
if (block[i].getI(this) == NewBlock[j].getI(this)
&& block[i].getJ(this) == NewBlock[j].getJ(this))
count = true;
}
}
if (count == false)
CanSwitch = false;
}catch(Exception ex){}
}
if( downBelow==false && CanSwitch==true)
{
for (int i = 0; i < 4; i++) {
System.out.println();
Fill[block[i].getI(this)][block[i].getJ(this)] = 0;
block[i].setBlock(NewBlock[i]);
}
for (int j = 0; j < 4; j++)
Fill[block[j].getI(this)][block[j].getJ(this)] = block[j].color;
repaint();
}
}
public void blockLeft(Block block[]) {
boolean left = true;
boolean count = true;
for (int i = 0; i < 4; i++) {
if (Fill[block[i].getI(this)-1][block[i].getJ(this)] != 0) {
count = false;
for (int j = 0; j < 4; j++) {
if (i != j)
if (block[i].getI(this) - 1== block[j].getI(this) &&
block[i].getJ(this)== block[j].getJ(this))
count = true;
}
}
if (count == false)
left = false;
}
if (left == true && downBelow==false) {
for (int i = 0; i < 4; i++)
Fill[block[i].getI(this)][block[i].getJ(this)] = 0;
for (int i = 0; i < 4; i++)
{
block[i].x-=20;
Fill[block[i].getI(this)][block[i].getJ(this)] = block[i].color;
}
repaint();
}
}
public void blockRight(Block block[]) {
boolean right = true;
boolean count = true;
for (int i = 0; i < 4; i++) {
if (Fill[block[i].getI(this) + 1][block[i].getJ(this)] != 0) {
count = false;
for (int j = 0; j < 4; j++) {
if (i != j)
if (block[i].getI(this) + 1 == block[j].getI(this) &&
block[i].getJ(this) == block[j].getJ(this))
count = true;
}
}
if (count == false)
right = false;
}
if (right == true && downBelow==false) {
for (int i = 0; i < 4; i++)
Fill[block[i].getI(this)][block[i].getJ(this)] = 0;
for (int i = 0; i < 4; i++)
{
block[i].x+=20;
Fill[block[i].getI(this)][block[i].getJ(this)] = block[i].color;
}
repaint();
}
}
public void blockDown(Block block[]) {
boolean down = true;
boolean count = true;
int top = 0;
for (int i = 0; i < 4; i++) {
if (Fill[block[i].getI(this)][block[i].getJ(this) + 1] != 0) {
count = false;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -