Sample Animation
/**
* A Sample Animation with a Restart button
*
* @author Fr Chris Thiel, OFMCap
* @version 9 May 2007
*/
import java.awt.event.*;
import java.applet.Applet;
import java.awt.*;
import javax.swing.*;
public class SampleAnimation extends Applet
implements ActionListener
{
Timer timer;
Image virtualMem;
Graphics gBuffer;
int appletWidth;
int appletHeight;
int frame;
int lastFrame;
Button myButton;
/**
* ActionListener is an interface and
* requires the actionPerformed() method
* to be defined..in this case we
* look for a restart button being pressed
*/
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if (source == timer)
{
if (frame < lastFrame)
{
frame++;
}
else
{
frame=0;
}
}
else {
//restart button pressed
frame=0;
if (timer.isRunning())
{
timer.stop();
myButton.setLabel("Start");
}
else
{
timer.start();
myButton.setLabel("Stop");
}
}
repaint();
}
// OUR CLASS IS A SUBCLASS OF APPLET
/**
* this init() method will be run at the beginning
* and where we create the Listeners
*/
public void init()
{
appletWidth = getWidth();
appletHeight = getHeight();
frame=0;
timer=new Timer(10, this);
lastFrame=appletWidth;
virtualMem = createImage(appletWidth,appletHeight);
gBuffer = virtualMem.getGraphics();
gBuffer.setColor(Color.white);
gBuffer.fillRect(0,0,appletWidth,appletHeight);
myButton= new Button("Do It Again");
//the class is its own button listener
myButton.addActionListener (this);
add(myButton);
}
public void paint(Graphics g)
{
//We draw using the object methods of
// the graphics buffer, not what is
// currently on the screen
gBuffer.setColor(Color.white);
gBuffer.fillRect(0,0,appletWidth,appletHeight);gBuffer.setColor(Color.black);
gBuffer.setColor(Color.black);
gBuffer.drawString("Frame "+frame, 20,20);
gBuffer.setColor(Color.blue);
gBuffer.fillOval(frame, 200, 50,50);
//Now we send the result to the screen
g.drawImage(virtualMem,0,0,this);
}
public void update(Graphics g)
{
paint(g); //get rid of flicker with this method
}
}
Simple Draw with Clear Button
/**
* A Simple Draw with a clear button
*
* @author Fr Chris Thiel, OFMCap
* @version 9 May 2007
*/
import java.awt.event.*;
import java.applet.Applet;
import java.awt.*;
public class Draw_with_Button_Sample extends Applet
implements MouseMotionListener, MouseListener
{
// instance variables - replace the example below with your own
Image virtualMem;
Graphics gBuffer;
int oldX, oldY, newX, newY;
int appletWidth;
int appletHeight;
// MOUSE LISTENER IS AN INTERFACE so it requires
// all these methods, even if you do nothing:
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e)
{
newX = e.getX();//new
newY = e.getY();//new
oldX = newX;
oldY = newY;
repaint();
}
// MOUSE MOTION LISTENER IS AN INTERFACE:
// these methods are needed of all MouseMotionListeners,
// even if we don't do anything:
public void mouseMoved(MouseEvent e) {}
public void mouseDragged(MouseEvent e)
{
newX = e.getX();//new
newY = e.getY();//new
oldX = newX;
oldY = newY;
repaint();
}
// OUR CLASS IS A SUBCLASS OF APPLET
/**
* this init() method will be run at the beginning
* and where we create the Listeners
*/
public void init()
{
appletWidth = getWidth();
appletHeight = getHeight();
virtualMem = createImage(appletWidth,appletHeight);
gBuffer = virtualMem.getGraphics();
gBuffer.setColor(Color.white);
gBuffer.fillRect(0,0,appletWidth,appletHeight);
// Finally, we alter the init method to
// add our MouseListener and
// MouseMotionListener to *this* sub class of Applet:
addMouseMotionListener(this); // new
addMouseListener(this); //new
Button myButton= new Button("Clear");
// Here I am using an anonymous class
// for the action Listener
myButton.addActionListener ( new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
gBuffer.setColor(Color.white);
gBuffer.fillRect(0,0,appletWidth,appletHeight);
oldX=-1;
oldY=-1;
repaint();
}
} );
add(myButton);
}
public void paint(Graphics g)
{
//We draw using the object methods of
// the graphics buffer, not what is
// currently on the screen
gBuffer.setColor(Color.black);
gBuffer.drawString("Move inside the applet to draw", 20,20);
gBuffer.setColor(Color.blue);
gBuffer.fillRect(oldX,oldY,2,2);
//Now we send the result to the screen
g.drawImage(virtualMem,0,0,this);
}
public void update(Graphics g)
{
paint(g); //get rid of flicker with this method
}
}
Simple Tic Tac Toe Example
/**
* SimpleTicTackToe here.
*
* @author Fr Chris Thiel OFMCap
* @version 9 May 2007
*/
import java.awt.event.*;
import java.applet.Applet;
import java.awt.*;
public class SimpleTicTackToe extends Applet
implements MouseListener, ActionListener
{
/**
* SimpleTicTackToe variables
*/
int board[];
int turn;
int appletWidth;
int appletHeight;
int x1, x2, y1, y2, cell;
boolean gameOver;
Image virtualMem;
Graphics gBuffer;
/**
* MOUSE LISTENER IS AN INTERFACE so it requires
* all these methods, even if you do nothing:
*/
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e)
{
int x = e.getX();//new
int y = e.getY();//new
int location=9;
if (x < x1 && y x1 && x x2 && y < y1 ) location=2;
if (x < x1 && y > y1 && y < y2) location=3;
if (x > x1 && x y1 && y < y2) location=4;
if (x > x2 && y > y1 && y < y2) location=5;
if (x < x1 && y >y2) location=6;
if (x > x1 && x y2) location=7;
if (x > x2 && y > y2 ) location=8;
if (board[location]==0 && !gameOver)
{
board[location]=turn;
turn=(-1)*turn;
}
repaint();
}
/**
* ActionListener is an interface and
* requires the actionPerformed() method
* to be defined..in this case we
* look for a restart button being pressed
*/
public void actionPerformed(ActionEvent e)
{
//restart button pressed
for(int i=0; i<9; i++)board[i]=0;
turn=-1; //x is first
gameOver=false;
repaint();
}
/**
* Init
*/
public void init()
{
board=new int[9];
for(int i=0; i<9; i++)board[i]=0;
turn=-1; //x is first
gameOver=false;
appletWidth = getWidth();
appletHeight = getHeight();
x1=appletWidth/3;
x2=x1+appletWidth/3;
y1=appletHeight/3;
y2=y1+appletHeight/3;
cell=x1/2;
virtualMem = createImage(appletWidth,appletHeight);
gBuffer = virtualMem.getGraphics();
gBuffer.setColor(Color.white);
gBuffer.fillRect(0,0,appletWidth,appletHeight);
addMouseListener(this);
Button restartButton= new Button("Start Over");
restartButton.addActionListener (this);
add(restartButton);
}
private String gameStatus()
{
String m;
if (turn<0) m="Blue's Turn"; else m="Red's Turn";
int w[];
w=new int[8];
w[0]=board[0]+board[1]+board[2];
w[1]=board[3]+board[4]+board[5];
w[2]=board[6]+board[7]+board[8];
w[3]=board[0]+board[3]+board[6];
w[4]=board[1]+board[4]+board[7];
w[5]=board[2]+board[5]+board[8];
w[6]=board[0]+board[4]+board[8];
w[7]=board[2]+board[4]+board[6];
for (int i=0; i<8; i++)
{
if (w[i]==3)
{
gameOver=true;
m="Red Wins";
}
if (w[i]==-3)
{
gameOver=true;
m="Blue Wins";
}
}
return m;
}
public void paint(Graphics g)
{
gBuffer.setColor(Color.white);
gBuffer.fillRect(0,0,appletWidth,appletHeight);
gBuffer.setColor(Color.black);
gBuffer.drawString(gameStatus(), 20,appletHeight-20);
gBuffer.drawLine(x1,20,x1, appletHeight-20);
gBuffer.drawLine(x2,20,x2, appletHeight-20);
gBuffer.drawLine(20,y1, appletWidth-20,y1);
gBuffer.drawLine(20,y2, appletWidth-20,y2);
for (int i=0; i<9; i++)
{
if (board[i]<0) // x
{
gBuffer.setColor(Color.blue);
gBuffer.fillRect( cell/2+(i%3)*x1, cell/2+y1*(i/3), cell,cell);
}
if (board[i]>0) // o
{
gBuffer.setColor(Color.red);
gBuffer.fillOval( cell/2+(i%3)*x1, cell/2+y1*(i/3),cell,cell);
}
}
g.drawImage(virtualMem,0,0,this);
}
public void update(Graphics g)
{
paint(g); //get rid of flicker with this method
}
}