CellBasedGame
Class CellBasedGame

java.lang.Object
  |
  +--CellBasedGame.CellBasedGame
Direct Known Subclasses:
JBombGame

public abstract class CellBasedGame
extends java.lang.Object
implements KeybHandler, Tickable

Classe astratta che si occupa delle operazioni di base di un gioco basato su celle quadrate

Author:
Marco Mastropaolo (marco.mastropaolo@libero.it / st971422@educ.di.unito.it)

Field Summary
protected  java.awt.Image m_BackGnd
          L'immagine contenente il background
protected  boolean m_bGameOver
          indica lo stato di gameover dell'applicazione
protected  boolean m_bPaused
          indica lo stato della pausa dell'applicazione
protected  Cell[][] m_CellWorld
          array di celle contenente la mappa del livello
protected  java.awt.Container m_Container
          il container in cui viene visualizzato il gioco
protected  float m_fParallaxFactor
          quantità di effetto parallasse tra il background e gli sprites (1=nessun parallasse)
protected  java.awt.Image m_imgBackBuffer
          immagine di supporto per il double-buffering
protected  KeybController m_keybCtrl
          gestore degli eventi di tastiera
protected  int m_nCellHeight
          dimensioni della finestra di gioco e delle singole celle
protected  int m_nCellWidth
          dimensioni della finestra di gioco e delle singole celle
protected  int m_nMaxWorldHeight
          dimensioni della finestra di gioco e delle singole celle
protected  int m_nMaxWorldWidth
          dimensioni della finestra di gioco e delle singole celle
protected  int m_nOriginX
          punto di origine nel container (per container con bordi)
protected  int m_nOriginY
          punto di origine nel container (per container con bordi)
protected  int m_nPixelHeight
          dimensioni della finestra di gioco e delle singole celle
protected  int m_nPixelWidth
          dimensioni della finestra di gioco e delle singole celle
protected  int m_nWorldHeight
          altezza attuale del livello in celle
protected  int m_nWorldOriginX
          origine attuale del mondo nella finestra in pixel
protected  int m_nWorldOriginY
          origine attuale del mondo nella finestra in pixel
protected  int m_nWorldWidth
          larghezza attuale del livello in celle
protected  java.awt.Image m_Sprites
          L'immagine contenente gli sprites
protected  java.lang.String m_strPauseString
          stringa contenente il messaggio da visualizzare in pausa
protected  TimeController m_timeCtrl
          gestore degli eventi temporali
 
Constructor Summary
CellBasedGame(java.awt.Container p_Container, java.awt.Image p_Sprites, java.awt.Image p_BackGnd, int p_nWidth, int p_nHeight, int p_nCellWidth, int p_nCellHeight, int p_nMaxWWidth, int p_nMaxWHeight, int p_nStatusBarHeight)
          Costruisce un nuovo oggetto CellBasedGame
 
Method Summary
protected abstract  void allocCellArray()
          Funzione (astratta) richiamata per l'allocazione dell'array delle celle
(package private)  void changeCell(int nX, int nY, Cell newCell)
          Cambia una cella nel mondo.
 void dispose()
          Funzione da richiamare prima della distruzione di un oggetto JBombGame : provvede a terminare il TimeController associato.
 void drawSprite(java.awt.Graphics gfx, int dx, int dy, int sx, int sy)
          Disegna uno sprite alla coordinate mondiali definite, effettuandone le opportune traslazioni e l'eventuale clipping
protected abstract  void eachFrame()
          Funzione (astratta) richiamata a ogni frame con gioco attivo
protected abstract  void eachPausedFrame()
          Funzione (astratta) richiamata a ogni frame con gioco in pausa
 void gameOver()
          Setta il gioco in uno stato di game over (non piu giocabile)
 Cell getCell(int nX, int nY)
          Ottiene la cella corrispondente a una data coordinata in celle.
 int getCellHeight()
          Restituisce la altezza delle celle
 int getCellWidth()
          Restituisce la larghezza delle celle
 int getWorldHeight()
          Restituisce la altezza del mondo
 int getWorldWidth()
          Restituisce la larghezza del mondo
 void paint(java.awt.Graphics gfxFrontBuffer)
          Effettua il painting della finestra di gioco.
protected  void paintBackGnd(java.awt.Graphics gfx)
          Effettua il painting del background.
protected abstract  void paintCustom(java.awt.Graphics gfx)
          Funzione (astratta) richiamata a ogni repaint
protected abstract  void paintStatus(java.awt.Graphics gfx)
          Funzione (astratta) richiamata per il repaint della status bar
 void pause(java.lang.String str)
          Mette in pausa il gioco, mostrando una stringa
 Cell pixelToCell(int nX, int nY)
          Ottiene la cella corrispondente a una data coordinata in pixel.
 void setOrigin(int p_nOx, int p_nOy)
          Setta il punto di origine del Container
protected  void setWorldOrigin(int nX, int nY)
          Setta l'origine del viewport per il disegno
protected  void stopTimeCtrl()
          Ferma il time controller.
 void timeTick()
          Il fulcro del gioco : esegue a intervalli regolari le operazioni di gestione del gioco Richiama eachFrame o eachPausedFrame e schedula un repaint.
abstract  void updateKeyState(java.awt.event.KeyEvent e, boolean pressed)
          Aggiorna lo stato dei tasti
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

m_fParallaxFactor

protected float m_fParallaxFactor
quantità di effetto parallasse tra il background e gli sprites (1=nessun parallasse)

m_nPixelWidth

protected int m_nPixelWidth
dimensioni della finestra di gioco e delle singole celle

m_nPixelHeight

protected int m_nPixelHeight
dimensioni della finestra di gioco e delle singole celle

m_nCellWidth

protected int m_nCellWidth
dimensioni della finestra di gioco e delle singole celle

m_nCellHeight

protected int m_nCellHeight
dimensioni della finestra di gioco e delle singole celle

m_nMaxWorldWidth

protected int m_nMaxWorldWidth
dimensioni della finestra di gioco e delle singole celle

m_nMaxWorldHeight

protected int m_nMaxWorldHeight
dimensioni della finestra di gioco e delle singole celle

m_nWorldWidth

protected int m_nWorldWidth
larghezza attuale del livello in celle

m_nWorldHeight

protected int m_nWorldHeight
altezza attuale del livello in celle

m_nWorldOriginX

protected int m_nWorldOriginX
origine attuale del mondo nella finestra in pixel

m_nWorldOriginY

protected int m_nWorldOriginY
origine attuale del mondo nella finestra in pixel

m_Container

protected java.awt.Container m_Container
il container in cui viene visualizzato il gioco

m_Sprites

protected java.awt.Image m_Sprites
L'immagine contenente gli sprites

m_BackGnd

protected java.awt.Image m_BackGnd
L'immagine contenente il background

m_nOriginX

protected int m_nOriginX
punto di origine nel container (per container con bordi)

m_nOriginY

protected int m_nOriginY
punto di origine nel container (per container con bordi)

m_CellWorld

protected Cell[][] m_CellWorld
array di celle contenente la mappa del livello

m_imgBackBuffer

protected java.awt.Image m_imgBackBuffer
immagine di supporto per il double-buffering

m_keybCtrl

protected KeybController m_keybCtrl
gestore degli eventi di tastiera

m_timeCtrl

protected TimeController m_timeCtrl
gestore degli eventi temporali

m_bPaused

protected boolean m_bPaused
indica lo stato della pausa dell'applicazione

m_strPauseString

protected java.lang.String m_strPauseString
stringa contenente il messaggio da visualizzare in pausa

m_bGameOver

protected boolean m_bGameOver
indica lo stato di gameover dell'applicazione
Constructor Detail

CellBasedGame

public CellBasedGame(java.awt.Container p_Container,
                     java.awt.Image p_Sprites,
                     java.awt.Image p_BackGnd,
                     int p_nWidth,
                     int p_nHeight,
                     int p_nCellWidth,
                     int p_nCellHeight,
                     int p_nMaxWWidth,
                     int p_nMaxWHeight,
                     int p_nStatusBarHeight)
Costruisce un nuovo oggetto CellBasedGame
Parameters:
p_Container - Il Container su cui disegnare il gioco
p_Sprites - L'immagine contenente gli sprites
p_BackGnd - L'immagine contenente il background
p_nWidth - Larghezza in pixel della finestra
p_nHeight - Altezza in pixel della finestra
p_nCellWidth - Pixel per cella in larghezza
p_nCellHeight - Pixel per cella in altezza
p_nMaxWWidth - Massima larghezza del mondo [in celle]
p_nMaxWHeight - Massima larghezza del mondo [in celle]
p_nStatusBarHeight - Altezza della status bar [in pixel]
Method Detail

drawSprite

public void drawSprite(java.awt.Graphics gfx,
                       int dx,
                       int dy,
                       int sx,
                       int sy)
Disegna uno sprite alla coordinate mondiali definite, effettuandone le opportune traslazioni e l'eventuale clipping
Parameters:
g - L'oggetto Graphics su cui disegnare
dx - la coordinata x di destinazione (coordinata mondiale in pixel)
dy - la coordinata y di destinazione (coordinata mondiale in pixel)
sx - la coordinata x dello sprite nel file sprites.gif
sy - la coordinata y dello sprite nel file sprites.gif

setOrigin

public void setOrigin(int p_nOx,
                      int p_nOy)
Setta il punto di origine del Container
Parameters:
p_nOx - Un intero contenente la coordinata x del punto in alto a sinistra
p_nOy - Un intero contenente la coordinata y del punto in alto a sinistra

dispose

public void dispose()
Funzione da richiamare prima della distruzione di un oggetto JBombGame : provvede a terminare il TimeController associato.

paintBackGnd

protected void paintBackGnd(java.awt.Graphics gfx)
Effettua il painting del background. Nota : l'immagine di background deve essere sempre grossa almeno quanto la finestra.

updateKeyState

public abstract void updateKeyState(java.awt.event.KeyEvent e,
                                    boolean pressed)
Aggiorna lo stato dei tasti
Specified by:
updateKeyState in interface KeybHandler

pause

public void pause(java.lang.String str)
Mette in pausa il gioco, mostrando una stringa

pixelToCell

public Cell pixelToCell(int nX,
                        int nY)
Ottiene la cella corrispondente a una data coordinata in pixel.
Parameters:
nX - Coordinata X in pixel della cella voluta
nY - Coordinata X in pixel della cella voluta
Returns:
La cella desiderata

getCell

public Cell getCell(int nX,
                    int nY)
Ottiene la cella corrispondente a una data coordinata in celle.
Parameters:
nX - Coordinata X in celle della cella voluta
nY - Coordinata X in celle della cella voluta
Returns:
La cella desiderata

stopTimeCtrl

protected void stopTimeCtrl()
Ferma il time controller. Può essere richiamata anche se il timeController è già fermo.

timeTick

public void timeTick()
Il fulcro del gioco : esegue a intervalli regolari le operazioni di gestione del gioco Richiama eachFrame o eachPausedFrame e schedula un repaint.
Specified by:
timeTick in interface Tickable

setWorldOrigin

protected void setWorldOrigin(int nX,
                              int nY)
Setta l'origine del viewport per il disegno
Parameters:
nX - Coordinata X dell'origine del ViewPort
nY - Coordinata Y dell'origine del ViewPort

paint

public void paint(java.awt.Graphics gfxFrontBuffer)
Effettua il painting della finestra di gioco. Vengono da qui richiamati i paint di tutti gli oggetti da ridisegnare, e gestisce automaticamente il doublebuffering e lo spessore dei bordi dei frame

getCellWidth

public int getCellWidth()
Restituisce la larghezza delle celle

getCellHeight

public int getCellHeight()
Restituisce la altezza delle celle

getWorldWidth

public int getWorldWidth()
Restituisce la larghezza del mondo

getWorldHeight

public int getWorldHeight()
Restituisce la altezza del mondo

changeCell

void changeCell(int nX,
                int nY,
                Cell newCell)
Cambia una cella nel mondo. Visibile package perché chiamabile solo dal metodo changeSelf della classe Cell
Parameters:
nX - Coordinata X della cella da sostituire
nY - Coordinata Y della cella da sostituire
newCell - la nuova Cell

gameOver

public void gameOver()
Setta il gioco in uno stato di game over (non piu giocabile)

eachFrame

protected abstract void eachFrame()
Funzione (astratta) richiamata a ogni frame con gioco attivo

eachPausedFrame

protected abstract void eachPausedFrame()
Funzione (astratta) richiamata a ogni frame con gioco in pausa

allocCellArray

protected abstract void allocCellArray()
Funzione (astratta) richiamata per l'allocazione dell'array delle celle

paintCustom

protected abstract void paintCustom(java.awt.Graphics gfx)
Funzione (astratta) richiamata a ogni repaint

paintStatus

protected abstract void paintStatus(java.awt.Graphics gfx)
Funzione (astratta) richiamata per il repaint della status bar