Created
April 28, 2014 15:26
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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