Рефераты. Java-гра "Тетріс"

Додаток Б Опис інтерфейса програми

Запустивши гру фігури починають спускатися. Для управління фігурою треба користуватись клавішами навігації. Для того, щоб призупинити гру треба натиснути кнопку «Pause» або клавішу F3. Для продовження гри треба натиснути кнопку «Resume» або клавішу F3. Для початку нової гри треба вибрати пункт меню «Start New Game» або натиснути клавішу F2, а для того, щоб зупинити гру зовсім - вибрати пункт меню «Stop Game». Для виходу з гри треба вибрати пункт меню «Exit» або просто закрити програму.

Додаток В Інструкція з встановлення

1. На комп'ютері повинна бути встановлена JRE 6.3(віртуальна машина Java)

2. Монітор повинен підтримувати режим 1024х768х24bit

3. 45kb на жорсткому диску

4. Щоб виконати проект з командного рядка, перейдіть до каталогу, де знаходиться файл і наберіть наступне: Java -jar "TetrisGame.jar", або запустіть програму подвійним клацанням миші.

Додаток Г Лістинг програми

Файл GamePanel.java

package Tetr;

import java.awt.event.*;

/**

*

* @author irdis_13

*/

interface GamePanel extends ActionListener{

final static int PLAY = 1;

final static int STOP = 2;

final static int PAUSE =3;

public void startNewGame();

public void pauseGame();

public void resumeGame();

public void stopGame();

public int getScore();

public int getState();

public void figureMoveRight();

public void figureMoveLeft();

public void figureMoveDown();

public void figureRotate();

public void gamePauseResume();

}

Файл Tetris.java

package Tetr;

/**

*

* @author irdis_13

*/

public class Tetris {

public static void main(String[] args) throws InterruptedException {

TetrisFrame.setDefaultLookAndFeelDecorated(true);

TetrisFrame frame = new TetrisFrame();

frame.setVisible(true);

String s = "D:\\FirstProb2\\src\\Tetr\\tetris.mid";

if (args.length>0)

s = args[0];

new PlaySound(s);

}

}

Файл ButtonPanel.java

package Tetr;

/**

*

* @author irdis_13

*/

public class ButtonPanel extends javax.swing.JPanel {

private TetrisFrame frame;

public ButtonPanel(TetrisFrame frame) {

this.frame = frame;

initComponents();

}

// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents

private void initComponents() {

jButton1 = new javax.swing.JButton();

jButton2 = new javax.swing.JButton();

setFocusable(false);

jButton1.setText("Resume");

jButton1.setFocusable(false);

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt);

}

});

add(jButton1);

jButton2.setText("Pause");

jButton2.setFocusable(false);

jButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton2ActionPerformed(evt);

}

});

add(jButton2);

}// </editor-fold>//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed

frame.continueButtonPressed(evt);

}//GEN-LAST:event_jButton1ActionPerformed

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed

frame.pauseButtonPressed(evt);

}//GEN-LAST:event_jButton2ActionPerformed

// Variables declaration - do not modify//GEN-BEGIN:variables

private javax.swing.JButton jButton1;

private javax.swing.JButton jButton2;

// End of variables declaration//GEN-END:variables

}

Файл Figure.java

package Tetr;

import java.util.Random;

import java.awt.*;

/**

*

* @author irdis_13

*/

public class Figure {

final static byte[][][] PATTERN = {

{{0,0,0,0}, // "пустой" шаблон - просто для удобства

{0,0,0,0},

{0,0,0,0},

{0,0,0,0}

},

{

{1}, //

{1},

{1},

{1}

},

{{2,0},

{2,0},

{2,2}

},

{{0,3},

{0,3},

{3,3}

},

{{4,0},

{4,4},

{4,0}

},

{{5,0},

{5,5},

{0,5}

},

{{0,6},

{6,6},

{6,0}

},

{{7,7},

{7,7}

}

};

final static Color[] COLORS = {

Color.GRAY,

Color.BLUE,

Color.CYAN,

Color.GREEN,

Color.MAGENTA,

Color.RED,

Color.PINK,

Color.YELLOW

};

private int type;

private int[][] pat;

private int x,y,rotation;

private static Random r = new Random();

private static int nextType = 0;

private static int nextRot = -1;

public Figure() {

if (nextType==0) {

type = r.nextInt(PATTERN.length-1)+1;

rotation = r.nextInt(4);

} else {

type = nextType;

rotation = nextRot;

}

nextType = r.nextInt(PATTERN.length-1)+1;

y = 0; x = 4;

nextRot = r.nextInt(4);

pat = new int[PATTERN[type].length]

[PATTERN[type][0].length];

for (int i=0; i<pat.length; i++)

for (int j=0; j<pat[i].length; j++) {

pat[i][j] = PATTERN[type][i][j];

}

for (int i=0; i<rotation; i++) rotate();

}

public int getX() {

return x;

}

public int getY() {

return y;

}

public int getHeight() {

return pat.length;

}

public int getWidth() {

return pat[0].length;

}

public int getCell(int i, int j)

return pat[i][j];

public void draw(Graphics g) {

for (int i=0; i<pat.length; i++) {

for (int j=0; j<pat[i].length; j++)

if (pat[i][j]!=0){

g.setColor(COLORS[pat[i][j]]);

g.fillRect((x+j)*30+11,(i+y)*30+1,28,28);

}

}

drawNext(g,350,50);

}

public void drawNext(Graphics g, int px, int py) {

int[][] p = new int[PATTERN[nextType].length][PATTERN[nextType][0].length];

for (int i=0; i<p.length; i++) {

for (int j=0; j<p[0].length; j++) {

p[i][j] = PATTERN[nextType][i][j];

}

}

for (int kr=0; kr<nextRot; kr++){

int[][] p2 = new int[p[0].length][p.length];

for (int i=0; i<p.length; i++) {

for (int j=0; j<p[0].length; j++) {

p2[j][i] = p[i][j];

}

}

p = new int[p2.length][p2[0].length];

for (int i=0; i<p.length; i++) for (int j=0; j<p[0].length; j++) {

p[i][j] = p2[p.length-i-1][j];

}

}

for (int i=0; i<4; i++) for (int j=0; j<4; j++) {

g.setColor(COLORS[0]);

g.fillRect(j*30+px, i*30+py, 28,28);

}

for (int i=0; i<p.length; i++) for(int j=0; j<p[0].length; j++) {

g.setColor(COLORS[p[i][j]]);

g.fillRect(j*30+px, i*30+py, 28,28);

}

}

public void rotate() {

int[][] newPat = new int[pat[0].length][pat.length];

for (int i=0; i<pat.length; i++) for (int j=0; j<pat[0].length; j++) {

newPat[j][i] = pat[i][j];

}

pat = new int[newPat.length][newPat[0].length];

for (int i=0; i<pat.length; i++) for (int j=0; j<pat[0].length; j++) {

pat[i][j] = newPat[pat.length-i-1][j];

}

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.