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

jMenu2.setFocusable(false);

menuNewGame1.setText("Start New Game");

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

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

menuNewGame1ActionPerformed(evt);

}

});

jMenu2.add(menuNewGame1);

menuPauseGame1.setText("Stop Game");

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

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

menuPauseGame1ActionPerformed(evt);

}

});

jMenu2.add(menuPauseGame1);

jMenu2.add(jSeparator2);

menuFileExit1.setText("Exit");

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

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

menuFileExit1ActionPerformed(evt);

}

});

jMenu2.add(menuFileExit1);

menuBar1.add(jMenu2);

setJMenuBar(menuBar1);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(153, 153, 153)

.addComponent(buttonPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(tetrisGamePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 485, javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(buttonPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(tetrisGamePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 612, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

pack();

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

private void tetrisGamePanel1KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tetrisGamePanel1KeyPressed

TetrisGamePanel p = (TetrisGamePanel)tetrisGamePanel1;

switch (evt.getKeyCode()) {

case KeyEvent.VK_LEFT:

p.figureMoveLeft();

break;

case KeyEvent.VK_RIGHT:

p.figureMoveRight();

break;

case KeyEvent.VK_UP:

p.figureRotate();

break;

case KeyEvent.VK_DOWN:

p.figureMoveDown();

break;

case KeyEvent.VK_F2:

p.startNewGame();

break;

case KeyEvent.VK_F3:

p.gamePauseResume();

break;

default: return;

}

repaint();

}//GEN-LAST:event_tetrisGamePanel1KeyPressed

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

TetrisGamePanel p = (TetrisGamePanel)tetrisGamePanel1;

p.startNewGame();

}//GEN-LAST:event_menuNewGame1ActionPerformed

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

TetrisGamePanel p = (TetrisGamePanel)tetrisGamePanel1;

p.stopGame();

}//GEN-LAST:event_menuPauseGame1ActionPerformed

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

System.exit(0);

}//GEN-LAST:event_menuFileExit1ActionPerformed

/**

* @param args the command line arguments

*/

public void continueButtonPressed(ActionEvent evt) {

TetrisGamePanel p = (TetrisGamePanel)tetrisGamePanel1;

p.resumeGame();

}

public void pauseButtonPressed(ActionEvent evt) {

TetrisGamePanel p = (TetrisGamePanel)tetrisGamePanel1;

p.pauseGame();

}

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

private Tetr.ButtonPanel buttonPanel1;

private javax.swing.JMenu jMenu1;

private javax.swing.JMenu jMenu2;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JSeparator jSeparator2;

private javax.swing.JMenuBar menuBar;

private javax.swing.JMenuBar menuBar1;

private javax.swing.JMenuItem menuFileExit;

private javax.swing.JMenuItem menuFileExit1;

private javax.swing.JMenuItem menuNewGame;

private javax.swing.JMenuItem menuNewGame1;

private javax.swing.JMenuItem menuPauseGame;

private javax.swing.JMenuItem menuPauseGame1;

private Tetr.TetrisGamePanel tetrisGamePanel1;

}

Файл TetrisGamePanel.java

package Tetr;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

*

* @author irdis_13

*/

public class TetrisGamePanel extends javax.swing.JPanel implements GamePanel,ActionListener {

private Glass stakan;

private Figure fig = null;

private int score = 0;

private int gameState;

private int[] DELAY = {500, 450, 400, 350, 300, 250, 200, 150, 100, 50};

private int level = 1;

Timer t = new javax.swing.Timer(DELAY[level], this);

public TetrisGamePanel() {

stakan = new Glass();

startNewGame();

t.start();

}

@Override

public void paintComponent(Graphics g) {

super.paintComponent(g);

stakan.draw(g);

fig.draw(g);

g.setFont(new Font("Times New Roman", Font.BOLD, 24));

g.setColor(Color.BLACK);

g.drawString("Счет: " + score, 350, 250);

g.drawString("Уровень: " + level, 350, 300);

}

public int getScore() {

return score;

}

public void startNewGame() {

score = 0;

level = 1;

fig = new Figure();

stakan = new Glass();

gameState = PLAY;

}

public void pauseGame() {

if (gameState == PLAY) {

gameState = PAUSE;

}

}

public void resumeGame() {

if (gameState == PAUSE) {

gameState = PLAY;

}

}

public void stopGame() {

gameState = STOP;

}

public int getState() {

return gameState;

}

public void figureMoveRight(){

if (fig.canRight(stakan)& gameState==PLAY)

fig.moveRight();

}

public void figureMoveLeft(){

if (fig.canLeft(stakan)& gameState==PLAY)

fig.moveLeft();

}

public void figureMoveDown(){

t.setDelay(DELAY[level]/20);

}

public void figureRotate(){

if (fig.canRotate(stakan)& gameState==PLAY)

fig.rotate();

}

public void gamePauseResume(){

if (gameState==PLAY) {

gameState = PAUSE;

}

else

if (gameState==PAUSE) {

gameState = PLAY;

}

}

public void actionPerformed(ActionEvent e) {

if (gameState != PLAY) {

return;

}

int bonus;

if (fig.canDown(stakan)) {

fig.moveDown();

} else {

if ((bonus = stakan.acceptFigure(fig)) < 0) {

stopGame();

}

if (bonus > 0) {

switch (bonus) {

case 4:

score += 20;

case 3:

score += 15;

case 2:

score += 10;

case 1:

score += 5;

}

int newLevel = score / 100 + 1;

if (newLevel > level && level < 9) {

level++;

}

}

if (gameState == PLAY) {

fig = new Figure();

t.setDelay(DELAY[level]);

}

}

repaint();

}

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

private void initComponents() {

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGap(0, 400, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGap(0, 300, Short.MAX_VALUE)

);

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

}

Додаток Д Результат роботи програми

Результат роботи програми зображено на рисунку 5

Рисунок 5 - Результат роботи програми

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



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