Skip to content

Instantly share code, notes, and snippets.

@Chrisdf
Created April 28, 2014 15:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Chrisdf/11375420 to your computer and use it in GitHub Desktop.
Save Chrisdf/11375420 to your computer and use it in GitHub Desktop.
Issue with background painting over asseroid objects, think it is a problem with for loop synchronization
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.ArrayList;
public class Space_Fighters extends Applet implements Runnable, KeyListener{
Graphics bufferGraphics;
Image offscreen;
Dimension dim;
static boolean ingame = false;
static boolean menu = true;
static int select = 0;
static Image player1ship;
static Image player2ship;
Image jShip;
Image cShip;
Image pShip;
Image redAsseroid;
Image pinkAsseroid;
Image purpleAsseroid;
Image purpleExplosion;
Image darkBlueAsseroid;
Image darkBlueExplosion;
Image pinkExplosion;
static int player1x = 230;
static int player2x = 742;
static int player1acc = 0;
static int player2acc = 0;
static int accTimer1 = 0;
static int accTimer2 = 0;
static boolean accCount = false;
static boolean accCount2 = false;
static ArrayList<Asseroid> rockList;
static int rockTimer = 0;
public void run(){
while(ingame || menu){
if(ingame){
player1x = shipUpdateOne();
player2x = shipUpdateTwo();
spawnRock();
rockTimer++;
}
repaint();
MyLibrary.sleep(17);
if(accCount)
accTimer1 += 1;
if(accCount2)
accTimer2 += 1;
}
}
public void init() {
dim = getSize();
offscreen = createImage(dim.width,dim.height);
bufferGraphics = offscreen.getGraphics();
addKeyListener(this);
Thread main = new Thread(this);
main.start();
jShip = getImage(getDocumentBase(), "Justin_Ship.PNG");
cShip = getImage(getDocumentBase(), "Chris_Ship.PNG");
pShip = getImage(getDocumentBase(), "Pat_Ship.PNG");
pinkAsseroid = getImage(getDocumentBase(), "pinkAsseroid.PNG");
pinkExplosion= getImage(getDocumentBase(), "pinkExplosion.PNG");
purpleAsseroid = getImage(getDocumentBase(), "purpleAsseroid.PNG");
purpleExplosion= getImage(getDocumentBase(), "purpleExplosion.PNG");
darkBlueAsseroid = getImage(getDocumentBase(), "darkBlueAsseroid.PNG");
darkBlueExplosion= getImage(getDocumentBase(), "darkBlueExplosion.PNG");
redAsseroid = getImage(getDocumentBase(), "redAsseroid.PNG");
}
public void update(Graphics g){
paint(g);
}
public synchronized void paint(Graphics g) {
Image main1 = getImage(getDocumentBase(), "Menu1.JPG");
Image main2 = getImage(getDocumentBase(), "Menu2.JPG");
Image main3 = getImage(getDocumentBase(), "Menu3.JPG");
if(menu){
switch (select){
case 0:
bufferGraphics.drawImage(main1,0,0,this);
break;
case 1:
bufferGraphics.drawImage(main2,0,0,this);
break;
case 2:
bufferGraphics.drawImage(main3,0,0,this);
break;
}
}
if(ingame){
bufferGraphics.setColor(Color.black);
bufferGraphics.fillRect(0,0,1024,768);
bufferGraphics.setColor(Color.white);
bufferGraphics.fillRect(507,0,10,768);
bufferGraphics.drawImage(player1ship,player1x,600,this);
bufferGraphics.drawImage(player2ship,player2x,600,this);
// /*
for(int count = 0; count<rockList.size(); count++){
switch (rockList.get(count).type){
case 3:
bufferGraphics.drawImage(redAsseroid, rockList.get(count).xPos,rockList.get(count).yPos,this);
System.out.println(rockList.size());
break;
case 2:
bufferGraphics.drawImage(purpleAsseroid, rockList.get(count).xPos,rockList.get(count).yPos,this);
System.out.println(rockList.size());
break;
case 1:
bufferGraphics.drawImage(pinkAsseroid, rockList.get(count).xPos,rockList.get(count).yPos,this);
System.out.println(rockList.size());
break;
case 0:
bufferGraphics.drawImage(pinkExplosion, rockList.get(count).xPos,rockList.get(count).yPos,this);
System.out.println(rockList.size());
break;
}
//try{Thread.sleep(500);}catch(Exception e){}
}
// */
}
g.drawImage(offscreen,0,0,this);
}
public void stop(){
}
public void keyPressed(KeyEvent e){
switch (e.getKeyCode()){
case KeyEvent.VK_UP:
if(menu){
if(select == 0)
select = 2;
else
select--;
}
break;
case KeyEvent.VK_DOWN:
if(menu){
if(select == 2)
select = 0;
else
select++;
}
break;
case KeyEvent.VK_LEFT:
player2MoveLeft();
break;
case KeyEvent.VK_RIGHT:
player2MoveRight();
break;
case KeyEvent.VK_W:
break;
case KeyEvent.VK_A:
player1MoveRight();
break;
case KeyEvent.VK_D:
player1MoveLeft();
break;
case KeyEvent.VK_ENTER:
if(menu){
menu = false;
ingame = true;
rockList = new ArrayList<Asseroid>();
switch(select){
case 0:
player1ship = pShip;
player2ship = cShip;
break;
case 1:
player1ship = jShip;
player2ship = pShip;
break;
case 2:
player1ship = cShip;
player2ship = jShip;
break;
}
}
break;
}
}
public void keyReleased(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_UP:
break;
case KeyEvent.VK_LEFT:
player2StopMovement();
break;
case KeyEvent.VK_RIGHT:
player2StopMovement();
break;
case KeyEvent.VK_W:
break;
case KeyEvent.VK_A:
player1StopMovement();
break;
case KeyEvent.VK_D:
player1StopMovement();
break;
}
}
public void keyTyped(KeyEvent e){
}
public static int shipUpdateOne(){
player1x += player1acc;
if(player1x > 427)
player1x = 427;
if(player1x < 0)
player1x = 0;
return player1x;
}
public static int shipUpdateTwo(){
player2x += player2acc;
if(player2x < 517)
player2x = 517;
if(player2x > 944)
player2x = 944;
return player2x;
}
public static void spawnRock(){
int chance = MyLibrary.getRandNum(200,900);
if(rockTimer > chance){
rockList.add(new Asseroid());
rockTimer = 0;
}
}
public static void player1MoveRight(){
accCount = true;
if(player1acc>0)
player1acc = player1acc * -1;
player1acc = -3+((-1)*(accTimer1/20));
}
public static void player1MoveLeft(){
accCount = true;
if(player1acc<0)
player1acc = player1acc * -1;
player1acc = 3 + (accTimer1/20);
}
public static void player2MoveRight(){
accCount2 = true;
if(player2acc<0)
player2acc = player1acc * -1;
player2acc = 3 + (accTimer2/20);
}
public static void player2MoveLeft(){
accCount2 = true;
if(player2acc>0)
player2acc = player1acc * -1;
player2acc = -3 + ((-1)*(accTimer2/20));
}
public static void player1StopMovement(){
player1acc = 0;
accTimer1 = 0;
accCount = false;
}
public static void player2StopMovement(){
player2acc = 0;
accTimer2 = 0;
accCount2 = false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment