+ All Categories
Home > Documents > Developing Games in Java - Code Companion

Developing Games in Java - Code Companion

Date post: 08-Dec-2016
Category:
Upload: buitruc
View: 214 times
Download: 0 times
Share this document with a friend

If you can't read please download the document

Transcript

allsrc/ch01src/ThreadPool.java

allsrc/ch01src/ThreadPool.javaimportjava.util.LinkedList;

/**

Athreadpoolisagroupofalimitednumberofthreadsthat

areusedtoexecutetasks.

*/

publicclassThreadPoolextendsThreadGroup{

privatebooleanisAlive;

privateLinkedListtaskQueue;

privateintthreadID;

privatestaticintthreadPoolID;

/**

CreatesanewThreadPool.

@paramnumThreadsThenumberofthreadsinthepool.

*/

publicThreadPool(intnumThreads){

super("ThreadPool-"+(threadPoolID++));

setDaemon(true);

isAlive=true;

taskQueue=newLinkedList();

for(inti=0;i=screen.getHeight()/FONT_SIZE){

messages.remove(0);

}

}


/**

Drawthelistofmessages

*/

publicsynchronizedvoiddraw(Graphics2Dg){

Windowwindow=screen.getFullScreenWindow();

g.setRenderingHint(

RenderingHints.KEY_TEXT_ANTIALIASING,

RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

//drawbackground

g.setColor(window.getBackground());

g.fillRect(0,0,screen.getWidth(),screen.getHeight());

//drawmessages

g.setColor(window.getForeground());

inty=FONT_SIZE;

for(inti=0;i1){

animTime+=elapsedTime;

if(animTime>=totalDuration){

animTime=animTime%totalDuration;

currFrameIndex=0;

}

while(animTime>getFrame(currFrameIndex).endTime){

currFrameIndex++;

}

}

}


/**

GetsthisAnimation'scurrentimage.Returnsnullifthis

animationhasnoimages.

*/

publicsynchronizedImagegetImage(){

if(frames.size()==0){

returnnull;

}

else{

returngetFrame(currFrameIndex).image;

}

}


privateAnimFramegetFrame(inti){

return(AnimFrame)frames.get(i);

}


privateclassAnimFrame{

Imageimage;

longendTime;

publicAnimFrame(Imageimage,longendTime){

this.image=image;

this.endTime=endTime;

}

}

}

allsrc/ch04src/src/com/brackeen/javagamebook/graphics/NullRepaintManager.java

allsrc/ch04src/src/com/brackeen/javagamebook/graphics/NullRepaintManager.javapackagecom.brackeen.javagamebook.graphics;

importjavax.swing.RepaintManager;

importjavax.swing.JComponent;

/**

TheNullRepaintManagerisaRepaintManagerthatdoesn't

doanyrepainting.Usefulwhenalltherenderingisdone

manuallybytheapplication.

*/

publicclassNullRepaintManagerextendsRepaintManager{

/**

InstallstheNullRepaintManager.

*/

publicstaticvoidinstall(){

RepaintManagerrepaintManager=newNullRepaintManager();

repaintManager.setDoubleBufferingEnabled(false);

RepaintManager.setCurrentManager(repaintManager);

}

publicvoidaddInvalidComponent(JComponentc){

//donothing

}

publicvoidaddDirtyRegion(JComponentc,intx,inty,

intw,inth)

{

//donothing

}

publicvoidmarkCompletelyDirty(JComponentc){

//donothing

}

publicvoidpaintDirtyRegions(){

//donothing

}

}

allsrc/ch04src/src/com/brackeen/javagamebook/graphics/ScreenManager.java

allsrc/ch04src/src/com/brackeen/javagamebook/graphics/ScreenManager.javapackagecom.brackeen.javagamebook.graphics;

importjava.awt.*;

importjava.awt.image.BufferStrategy;

importjava.awt.image.BufferedImage;

importjava.lang.reflect.InvocationTargetException;

importjavax.swing.JFrame;

/**

TheScreenManagerclassmanagesinitializinganddisplaying

fullscreengraphicsmodes.

*/

publicclassScreenManager{

privateGraphicsDevicedevice;

/**

CreatesanewScreenManagerobject.

*/

publicScreenManager(){

GraphicsEnvironmentenvironment=

GraphicsEnvironment.getLocalGraphicsEnvironment();

device=environment.getDefaultScreenDevice();

}


/**

Returnsalistofcompatibledisplaymodesforthe

defaultdeviceonthesystem.

*/

publicDisplayMode[]getCompatibleDisplayModes(){

returndevice.getDisplayModes();

}


/**

Returnsthefirstcompatiblemodeinalistofmodes.

Returnsnullifnomodesarecompatible.

*/

publicDisplayModefindFirstCompatibleMode(

DisplayModemodes[])

{

DisplayModegoodModes[]=device.getDisplayModes();

for(inti=0;ibackground.getHeight(null))

{

g.setColor(Color.black);

g.fillRect(0,0,screenWidth,screenHeight);

}

//drawparallaxbackgroundimage

if(background!=null){

intx=offsetX*

(screenWidth-background.getWidth(null))/

(screenWidth-mapWidth);

inty=screenHeight-background.getHeight(null);

g.drawImage(background,x,y,null);

}

//drawthevisibletiles

intfirstTileX=pixelsToTiles(-offsetX);

intlastTileX=firstTileX+

pixelsToTiles(screenWidth)+1;

for(inty=0;y


Recommended