uploading all files - final commit
This commit is contained in:
parent
0a64bb45d7
commit
d99d69545a
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>TerorTron</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,11 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.7
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 272 KiB |
Binary file not shown.
After Width: | Height: | Size: 741 KiB |
|
@ -0,0 +1,125 @@
|
|||
package Game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
|
||||
public class Bullet {
|
||||
private int x, y, direction;
|
||||
private LengthNode other;
|
||||
private Color color;
|
||||
public static int SIZE = Player.THIKNES, PIX_PER_STEP = 1,
|
||||
STILL_GO = 0, HIT = 1, OUT_OF_GRID = 2;
|
||||
|
||||
|
||||
private int hitPointX, hitPointY;
|
||||
public Bullet(int x, int y, int direction, LengthNode other)
|
||||
{
|
||||
color = Color.WHITE;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.direction = direction;
|
||||
this.other = other;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public int getHitPointX() {
|
||||
return hitPointX;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getHitPointY() {
|
||||
return hitPointY;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int fireStep(int maxWidth, int maxHeight)
|
||||
{
|
||||
switch(direction)
|
||||
{
|
||||
case 1: //up
|
||||
y -= PIX_PER_STEP;
|
||||
return presentState(maxWidth, maxHeight);
|
||||
|
||||
case 2: //down
|
||||
y += PIX_PER_STEP;
|
||||
return presentState(maxWidth, maxHeight);
|
||||
|
||||
case 3: //left
|
||||
x -= PIX_PER_STEP;
|
||||
return presentState(maxWidth, maxHeight);
|
||||
|
||||
case 4: //right
|
||||
x += PIX_PER_STEP;
|
||||
return presentState(maxWidth, maxHeight);
|
||||
}
|
||||
return presentState(maxWidth, maxHeight);
|
||||
}
|
||||
|
||||
private int presentState(int maxWidth, int maxHeight)
|
||||
{
|
||||
if(didHit())
|
||||
return HIT;
|
||||
else if(outOfGrid(maxWidth, maxHeight))
|
||||
return OUT_OF_GRID;
|
||||
else
|
||||
return STILL_GO;
|
||||
}
|
||||
|
||||
|
||||
private boolean didHit()
|
||||
{
|
||||
LengthNode p = other;
|
||||
for(; p.getNext() != null; p = p.getNext()){
|
||||
if(p.getNext().getX() == this.x && this.y == p.getNext().getY()){
|
||||
System.out.println("HIT! HIT! HIT!");
|
||||
p.setNext(null);
|
||||
x = -1000;
|
||||
y = -1000;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//****** DEBUG ****
|
||||
System.out.println("not hit");
|
||||
// **** end debug ****
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private boolean outOfGrid(int maxWidth, int maxHeight)
|
||||
{
|
||||
if((this.x < 0 - SIZE) || (this.y < 0 - SIZE) || (this.x >= maxWidth + SIZE) || (this.y >= maxHeight + SIZE)){
|
||||
// *** DEBUG
|
||||
|
||||
System.out.println("OUT!");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public void draw(Graphics g)
|
||||
{
|
||||
g.setColor(color);
|
||||
g.fillOval(x, y, SIZE, SIZE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package Game;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
|
||||
public class ContolersPanel extends JPanel{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
ImageIcon ctrl;
|
||||
|
||||
public ContolersPanel(){
|
||||
ClassLoader loader = ContolersPanel.class.getClassLoader();
|
||||
setBackground(Color.BLACK);
|
||||
ctrl = new ImageIcon(loader.getResource("ctrl.png"));
|
||||
|
||||
add(new JLabel(ctrl));
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
package Game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.WindowConstants;
|
||||
|
||||
public class GameFrame extends JFrame implements ActionListener{
|
||||
|
||||
public static final int FRAME_WIDTH = 1197, FRAME_HEIGHT = 899;
|
||||
|
||||
private JMenuBar menuBar;
|
||||
private JMenu menu;
|
||||
private JMenuItem start, controls, exit;
|
||||
|
||||
public GamePanel gamePanel;
|
||||
private ContolersPanel controlersPanel;
|
||||
private WellcomePanel welcome;
|
||||
|
||||
public GameFrame()
|
||||
{
|
||||
setSize(FRAME_WIDTH, FRAME_HEIGHT);
|
||||
setTitle("TronTeror Version 0.5.1 beta - by SagiDayan");
|
||||
setResizable(false);
|
||||
|
||||
//*************** Menu Bar *******************
|
||||
|
||||
menuBar = new JMenuBar();
|
||||
menu = new JMenu("Menu");
|
||||
start = new JMenuItem("Start Game");
|
||||
controls = new JMenuItem("controlers");
|
||||
menu.add(start);
|
||||
menu.add(controls);
|
||||
menuBar.add(menu);
|
||||
|
||||
start.addActionListener(this);
|
||||
controls.addActionListener(this);
|
||||
//add menuBar to frame
|
||||
|
||||
|
||||
this.setJMenuBar(menuBar);
|
||||
|
||||
//End Menu.
|
||||
|
||||
|
||||
|
||||
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||
|
||||
welcome = new WellcomePanel();
|
||||
controlersPanel = new ContolersPanel();
|
||||
gamePanel = new GamePanel();
|
||||
|
||||
|
||||
//gamePanel.addKeyListener(gamePanel);
|
||||
|
||||
add(welcome);
|
||||
|
||||
|
||||
setVisible(true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
if(e.getSource() == controls)
|
||||
{
|
||||
System.out.println("controles");
|
||||
welcome.setVisible(false);
|
||||
gamePanel.setVisible(false);
|
||||
add(controlersPanel);
|
||||
controlersPanel.setVisible(true);
|
||||
}
|
||||
else if( e.getSource() == start)
|
||||
{
|
||||
welcome.setVisible(false);
|
||||
controlersPanel.setVisible(false);
|
||||
gamePanel.setVisible(true);
|
||||
add(gamePanel);
|
||||
gamePanel.start();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,199 @@
|
|||
package Game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
public class GameLogic {
|
||||
private Player player1, player2;
|
||||
private int width, height;
|
||||
private Color colorP1, colorP2;
|
||||
|
||||
private Bullet bullet1, bullet2;
|
||||
|
||||
// **** Invisibility *****
|
||||
|
||||
private boolean inVisibilityHappend;
|
||||
private Invisibility invisibleMod;
|
||||
|
||||
|
||||
public GameLogic(int maxWidth, int maxHeight)
|
||||
{
|
||||
width = maxWidth;
|
||||
height = maxHeight;
|
||||
colorP1 = new Color(3,3,173);
|
||||
colorP2 = new Color(173, 3, 3 );
|
||||
|
||||
inVisibilityHappend = false;
|
||||
invisibleMod = new Invisibility(maxWidth, maxHeight);
|
||||
|
||||
player1 = new Player(getNewName("Please enter Player 1 Name"), Player.LEFT, colorP1, width - 300, 420, 0); //starts from right to left!
|
||||
player2 = new Player(getNewName("Now, Please enter Player 2 Name"), Player.RIGHT, colorP2, 0 + 300, 420, 0); //starts from left to right!
|
||||
}
|
||||
|
||||
|
||||
private String getNewName(String s){
|
||||
return JOptionPane.showInputDialog(s);
|
||||
}
|
||||
|
||||
public void setP1Direction(int direct)
|
||||
{
|
||||
player1.setDirection(direct);
|
||||
}
|
||||
|
||||
public void setP2Direction(int direct)
|
||||
{
|
||||
player2.setDirection(direct);
|
||||
}
|
||||
|
||||
public String getP1Name()
|
||||
{
|
||||
return player1.getName();
|
||||
}
|
||||
|
||||
public String getP2Name()
|
||||
{
|
||||
return player2.getName();
|
||||
}
|
||||
|
||||
public int getPlayer1Point()
|
||||
{
|
||||
return player1.getPoints();
|
||||
}
|
||||
|
||||
public int getPlayer2Point()
|
||||
{
|
||||
return player2.getPoints();
|
||||
}
|
||||
|
||||
public Player getP1(){
|
||||
return player1;
|
||||
}
|
||||
|
||||
public Player getP2(){
|
||||
return player2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public Bullet getBullet1() {
|
||||
return bullet1;
|
||||
}
|
||||
|
||||
|
||||
public Bullet getBullet2() {
|
||||
return bullet2;
|
||||
}
|
||||
|
||||
|
||||
public boolean stepAndOk()
|
||||
{
|
||||
|
||||
player1.step();
|
||||
player2.step();
|
||||
inVisibilityHappend = invisibleMod.makePoint(player1, player2);
|
||||
if(inVisibilityHappend)
|
||||
{
|
||||
checkPlayersVisibility();
|
||||
}
|
||||
if(player1.loosed(player2, width, height))
|
||||
{
|
||||
player2.addPoints();
|
||||
return false;
|
||||
}
|
||||
else if(player2.loosed(player1, width, height))
|
||||
{
|
||||
player1.addPoints();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void fire(Player p)
|
||||
{
|
||||
if(!p.isCanFire())
|
||||
return;
|
||||
if(p == player1)
|
||||
{
|
||||
bullet1 = new Bullet(player1.getHead().getX(), player1.getHead().getY(), player1.getDirection(), player2.getHead());
|
||||
return;
|
||||
}
|
||||
else if(p == player2)
|
||||
{
|
||||
bullet2 = new Bullet(player2.getHead().getX(), player2.getHead().getY(), player2.getDirection(), player1.getHead());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void bulletStep(Graphics g, int bulletState)
|
||||
{
|
||||
|
||||
//Player1 Shoots
|
||||
try{ //Freezes game and shoots
|
||||
if(bulletState == Bullet.STILL_GO)
|
||||
bullet1.draw(g);
|
||||
else
|
||||
player1.setCanFire(false);
|
||||
}catch (Exception e) {
|
||||
System.out.println("no bullet to p1");
|
||||
}
|
||||
//Player2 shoots
|
||||
try{ //Freezes game and shoots
|
||||
bulletState = bullet2.fireStep(width, height);
|
||||
if(bulletState == Bullet.STILL_GO)
|
||||
bullet2.draw(g);
|
||||
else
|
||||
player2.setCanFire(false);
|
||||
}catch (Exception e) {
|
||||
System.out.println("no bullet to p2");
|
||||
}
|
||||
}
|
||||
|
||||
public void restart()
|
||||
{
|
||||
player1 = new Player(player1.getName(), Player.LEFT, colorP1,width - 300, 420, player1.getPoints());
|
||||
player2 = new Player(player2.getName(), Player.RIGHT, colorP2, 0 + 300, 420, player2.getPoints());
|
||||
inVisibilityHappend = false;
|
||||
invisibleMod = new Invisibility(width, height);
|
||||
}
|
||||
|
||||
public void checkPlayersVisibility()
|
||||
{
|
||||
int x = invisibleMod.getX();
|
||||
int y = invisibleMod.getY();
|
||||
|
||||
if(player1.getHead().getX() == x && player1.getHead().getY() == y)
|
||||
invisibleModOn(player1, true);
|
||||
else if(player2.getHead().getX() == x && player2.getHead().getY() == y)
|
||||
invisibleModOn(player2, true);
|
||||
}
|
||||
|
||||
public void invisibleModOn(Player p, boolean switcher)
|
||||
{
|
||||
if(switcher)
|
||||
{
|
||||
System.out.println("got The Shit!!!");
|
||||
p.setIsVisible(false);
|
||||
invisibleMod.setX(-200);
|
||||
invisibleMod.setY(-200);
|
||||
}
|
||||
else
|
||||
p.setIsVisible(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void draw(Graphics g)
|
||||
{
|
||||
player1.draw(g);
|
||||
player2.draw(g);
|
||||
if(inVisibilityHappend)
|
||||
invisibleMod.draw(g);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,243 @@
|
|||
package Game;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.KeyListener;
|
||||
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.Timer;
|
||||
|
||||
public class GamePanel extends JPanel implements ActionListener, KeyListener{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private MenuPanel topPanel;
|
||||
private GameLogic logic;
|
||||
|
||||
private JLabel lblScore;
|
||||
|
||||
boolean p1Fire, p2Fire;
|
||||
|
||||
public static final int W = 1195, H = 855;
|
||||
|
||||
/*
|
||||
*
|
||||
* Setup TIMERS & LISTENERS !!!
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
Timer timerGeneral;
|
||||
Timer timerBullet;
|
||||
|
||||
public GamePanel() {
|
||||
|
||||
|
||||
setBackground(Color.BLACK);
|
||||
setLayout(new BorderLayout());
|
||||
setSize(W, H);
|
||||
|
||||
|
||||
|
||||
logic = new GameLogic(W, H);
|
||||
lblScore = new JLabel(logic.getP2Name()+": "+logic.getPlayer2Point()+" "+logic.getP1Name()+": "+logic.getPlayer1Point());
|
||||
lblScore.setForeground(Color.WHITE);
|
||||
lblScore.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
add(lblScore, BorderLayout.SOUTH);
|
||||
|
||||
//TEST!!!!
|
||||
timerGeneral = new Timer(30, this);
|
||||
timerBullet = new Timer(1, this);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void p1Fire()
|
||||
{
|
||||
|
||||
logic.fire(logic.getP1());
|
||||
p1Fire = true;
|
||||
timerBullet.start();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void p2Fire()
|
||||
{
|
||||
logic.fire(logic.getP2());
|
||||
p2Fire = true;
|
||||
timerBullet.start();
|
||||
}
|
||||
|
||||
public void paintComponent(Graphics g)
|
||||
{
|
||||
super.paintComponent(g);
|
||||
if(timerBullet.isRunning())
|
||||
paintBullets(g);
|
||||
logic.draw(g);
|
||||
g.setColor(Color.CYAN); //paint borders
|
||||
g.drawRect(0, 0, W-1, H-1);
|
||||
}
|
||||
|
||||
|
||||
private void paintBullets(Graphics g)
|
||||
{
|
||||
if(p1Fire)
|
||||
{
|
||||
int bulletState = logic.getBullet1().fireStep(W, H);
|
||||
if(bulletState == Bullet.STILL_GO){ // CHANGE 500 TODO
|
||||
logic.draw(g);
|
||||
logic.bulletStep(g, bulletState);
|
||||
}
|
||||
else{
|
||||
logic.draw(g);
|
||||
p1Fire = false;
|
||||
timerBullet.stop();
|
||||
}
|
||||
|
||||
}
|
||||
else if(p2Fire)
|
||||
{
|
||||
int bulletState = logic.getBullet2().fireStep(W, H);
|
||||
|
||||
if(bulletState == Bullet.STILL_GO){ // CHANGE 500 TODO
|
||||
logic.draw(g);
|
||||
logic.bulletStep(g, bulletState);
|
||||
}
|
||||
else{
|
||||
logic.draw(g);
|
||||
p2Fire = false;
|
||||
timerBullet.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void start(){
|
||||
|
||||
logic.restart();
|
||||
timerGeneral.start();
|
||||
System.out.println(getWidth()+" "+getHeight());
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* Actions! Timers, and keyActions will be down here!
|
||||
*
|
||||
*/
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
if(e.getSource()==timerGeneral)
|
||||
{
|
||||
|
||||
if(logic.stepAndOk())
|
||||
repaint();
|
||||
else
|
||||
{
|
||||
//logic.stepAndOk();
|
||||
timerGeneral.stop();
|
||||
System.out.println("FUCK!");
|
||||
lblScore.setText(logic.getP2Name()+": "+logic.getPlayer2Point()+" "+logic.getP1Name()+": "+logic.getPlayer1Point());
|
||||
}
|
||||
repaint();
|
||||
}
|
||||
if(e.getSource() == timerBullet)
|
||||
{
|
||||
repaint();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
/*
|
||||
* Player1 Controls
|
||||
*/
|
||||
if(e.getKeyCode() == KeyEvent.VK_SPACE)
|
||||
{
|
||||
if(logic.getP1().isCanFire()){
|
||||
p1Fire();
|
||||
|
||||
logic.getP1().setCanFire(false);
|
||||
}
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_DOWN){
|
||||
if(logic.getP1().getDirection() != Player.UP)
|
||||
logic.setP1Direction(Player.DOWN);
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_UP){
|
||||
if(logic.getP1().getDirection() != Player.DOWN)
|
||||
logic.setP1Direction(Player.UP);
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_LEFT){
|
||||
if(logic.getP1().getDirection() != Player.RIGHT)
|
||||
logic.setP1Direction(Player.LEFT);
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
|
||||
if(logic.getP1().getDirection() != Player.LEFT)
|
||||
logic.setP1Direction(Player.RIGHT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Player2 Controls
|
||||
*/
|
||||
if(e.getKeyCode() == KeyEvent.VK_CONTROL)
|
||||
{
|
||||
if(logic.getP2().isCanFire()){
|
||||
p2Fire();
|
||||
|
||||
logic.getP2().setCanFire(false);
|
||||
}
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_S){
|
||||
if(logic.getP2().getDirection() != Player.UP)
|
||||
logic.setP2Direction(Player.DOWN);
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_W){
|
||||
if(logic.getP2().getDirection() != Player.DOWN)
|
||||
logic.setP2Direction(Player.UP);
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_A){
|
||||
if(logic.getP2().getDirection() != Player.RIGHT)
|
||||
logic.setP2Direction(Player.LEFT);
|
||||
}
|
||||
else if(e.getKeyCode() == KeyEvent.VK_D){
|
||||
if(logic.getP2().getDirection() != Player.LEFT)
|
||||
logic.setP2Direction(Player.RIGHT);
|
||||
}
|
||||
|
||||
if(e.getKeyCode() == KeyEvent.VK_F2)
|
||||
{
|
||||
start();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyReleased(KeyEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(KeyEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package Game;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class ImagePanel extends JPanel{
|
||||
|
||||
private BufferedImage image;
|
||||
JLabel l;
|
||||
public ImagePanel() {
|
||||
setBackground(Color.DARK_GRAY);
|
||||
l = new JLabel();
|
||||
l.setIcon(new ImageIcon("Resource/images.png"));
|
||||
add(l);
|
||||
validate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
package Game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
|
||||
public class Invisibility {
|
||||
|
||||
private boolean goodPoint;
|
||||
private static int SIZE = 5;
|
||||
private int width, height, x, y;
|
||||
private Color color;
|
||||
private boolean show;
|
||||
|
||||
public Invisibility(int width, int height)
|
||||
{
|
||||
goodPoint = false;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
color = Color.CYAN;
|
||||
show = false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void draw(Graphics g)
|
||||
{
|
||||
g.setColor(color);
|
||||
g.fillRect(x, y, SIZE, SIZE);
|
||||
}
|
||||
|
||||
public boolean makePoint(Player p1, Player p2)
|
||||
{
|
||||
if(goodPoint)
|
||||
if(showPowerUp() || show)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
||||
x = (int)(Math.random() * width);
|
||||
if(x % Player.THIKNES != 0)
|
||||
return false;
|
||||
y = (int)(Math.random() * height);
|
||||
if(y % Player.THIKNES != 0)
|
||||
return false;
|
||||
|
||||
for(LengthNode p = p1.getHead(); p.getNext() != null ; p = p.getNext())
|
||||
{
|
||||
if(x == p.getX() && y == p.getY())
|
||||
return false;
|
||||
}
|
||||
|
||||
for(LengthNode p = p2.getHead(); p.getNext() != null ; p = p.getNext())
|
||||
{
|
||||
if(x == p.getX() && y == p.getY())
|
||||
return false;
|
||||
}
|
||||
goodPoint = true;
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
public boolean isGoodPoint() {
|
||||
return goodPoint;
|
||||
}
|
||||
|
||||
public void setGoodPoint(boolean goodPoint) {
|
||||
this.goodPoint = goodPoint;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public void setX(int x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public void setY(int y) {
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public boolean showPowerUp()
|
||||
{
|
||||
int c = (int)(Math.random() * 10000);
|
||||
if(c <= 10)
|
||||
{
|
||||
show = true;
|
||||
System.out.println("POWER UP!!!!!");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package Game;
|
||||
|
||||
public class LengthNode {
|
||||
|
||||
|
||||
private int x, y;
|
||||
private LengthNode next;
|
||||
|
||||
public LengthNode(int x, int y, LengthNode next)
|
||||
{
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public void setX(int x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public void setY(int y) {
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public LengthNode getNext() {
|
||||
return next;
|
||||
}
|
||||
|
||||
public void setNext(LengthNode next) {
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
public boolean sameValues(LengthNode other)
|
||||
{
|
||||
if(other.getX() == this.getX() && this.getY() == other.getY())
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package Game;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
|
||||
|
||||
public class MenuPanel extends JPanel{
|
||||
|
||||
private JButton button_start;
|
||||
private JLabel p1, p2;
|
||||
private int score1, score2;
|
||||
String name1, name2;
|
||||
|
||||
|
||||
|
||||
public MenuPanel(String name1, String name2, int score1, int score2) {
|
||||
setBackground(Color.DARK_GRAY);
|
||||
this.score1 = score1;
|
||||
this.score2 = score2;
|
||||
this.name1 = name1;
|
||||
this.name2 = name2;
|
||||
p1 = new JLabel();
|
||||
p2 = new JLabel();
|
||||
p1.setForeground(Color.WHITE);
|
||||
p2.setForeground(Color.WHITE);
|
||||
p1.setText(""+this.name1+": "+score1);
|
||||
p2.setText(""+this.name2+": "+score2);
|
||||
|
||||
setLayout(new BorderLayout(20, 0));
|
||||
add(p1, BorderLayout.WEST);
|
||||
add(new ImagePanel(), BorderLayout.CENTER);
|
||||
add(p2, BorderLayout.EAST);
|
||||
|
||||
}
|
||||
|
||||
public void updateScore(int score1, int score2){
|
||||
this.score1 = score1;
|
||||
this.score2 = score2;
|
||||
String s = ""+this.name1+": "+this.score1;
|
||||
p1 = new JLabel(s);
|
||||
System.out.println(p1.getText());
|
||||
s = ""+this.name2+": "+this.score2;
|
||||
p2.setText(s);
|
||||
System.out.println("======");
|
||||
System.out.println(""+this.name1+": "+this.score1);
|
||||
System.out.println(""+this.name2+": "+this.score2);
|
||||
System.out.println("======");
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,151 @@
|
|||
package Game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
|
||||
public class Player {
|
||||
|
||||
private String name;
|
||||
private int direction, points, intvisibleStepCount;
|
||||
private LengthNode head;
|
||||
private Color color;
|
||||
private boolean canFire;
|
||||
private boolean isVisible, flicker;
|
||||
|
||||
|
||||
public static int UP = 1, DOWN = 2, LEFT = 3, RIGHT = 4;
|
||||
|
||||
|
||||
public static int PIX_PER_STEP = 5, THIKNES = 5;
|
||||
|
||||
public Player(String name, int direction, Color color, int x, int y, int point)
|
||||
{
|
||||
this.name = name;
|
||||
this.direction = direction;
|
||||
this.color = color;
|
||||
head = new LengthNode(x, y, null);
|
||||
canFire = true;
|
||||
points = point;
|
||||
isVisible = true;
|
||||
flicker = false;
|
||||
intvisibleStepCount = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean isCanFire() {
|
||||
return canFire;
|
||||
}
|
||||
|
||||
public void setIsVisible(boolean bol)
|
||||
{
|
||||
isVisible = bol;
|
||||
}
|
||||
|
||||
public void setCanFire(boolean canFire) {
|
||||
this.canFire = canFire;
|
||||
}
|
||||
|
||||
public boolean getCanFire() {
|
||||
return canFire;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getPoints() {
|
||||
return points;
|
||||
}
|
||||
|
||||
public void addPoints() {
|
||||
this.points++;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setDirection(int direction) {
|
||||
this.direction = direction;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getDirection() {
|
||||
return direction;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public LengthNode getHead() {
|
||||
return head;
|
||||
}
|
||||
|
||||
public void step()
|
||||
{
|
||||
switch(direction)
|
||||
{
|
||||
case 1: //up
|
||||
head = new LengthNode(head.getX(), head.getY() - PIX_PER_STEP, head);
|
||||
break;
|
||||
case 2: //down
|
||||
head = new LengthNode(head.getX(), head.getY() + PIX_PER_STEP, head);
|
||||
break;
|
||||
case 3: //left
|
||||
head = new LengthNode(head.getX() - PIX_PER_STEP, head.getY(), head);
|
||||
break;
|
||||
case 4: //right
|
||||
head = new LengthNode(head.getX() + PIX_PER_STEP, head.getY(), head);
|
||||
break;
|
||||
}
|
||||
|
||||
if(!isVisible)
|
||||
intvisibleStepCount++;
|
||||
if(intvisibleStepCount == 300)
|
||||
isVisible = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean loosed(Player other, int maxWidth, int maxHeight)
|
||||
{
|
||||
//====player hit himself===
|
||||
for(LengthNode p = head.getNext(); p.getNext() != null ; p = p.getNext())
|
||||
if(head.sameValues(p))
|
||||
return true;
|
||||
//===player hit other player====
|
||||
for(LengthNode p = other.getHead(); p.getNext() != null ; p = p.getNext())
|
||||
if(head.sameValues(p))
|
||||
return true;
|
||||
//=== player hit border of grid ==
|
||||
if(head.getX() < 0 || head.getY() < 0 || head.getX() > maxWidth + THIKNES || head.getY() > maxHeight + THIKNES)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public void draw(Graphics g)
|
||||
{
|
||||
g.setColor(color);
|
||||
LengthNode p = head;
|
||||
if(isVisible)
|
||||
for(;p != null; p=p.getNext())
|
||||
g.fillRect(p.getX(), p.getY(), THIKNES, THIKNES); //All Player
|
||||
else //just head and body flicking
|
||||
if(flicker){
|
||||
for(;p != null; p=p.getNext())
|
||||
g.fillRect(p.getX(), p.getY(), THIKNES, THIKNES);
|
||||
flicker = false;
|
||||
}else{
|
||||
g.fillRect(p.getX(), p.getY(), THIKNES, THIKNES);
|
||||
int flickerOdds = (int)(Math.random() * 10);
|
||||
if(flickerOdds < 1)
|
||||
flicker = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package Game;
|
||||
import java.awt.Color;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
|
||||
public class WellcomePanel extends JPanel{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 2L;
|
||||
ImageIcon wlcm;
|
||||
|
||||
public WellcomePanel(){
|
||||
ClassLoader loader = ContolersPanel.class.getClassLoader();
|
||||
setBackground(Color.BLACK);
|
||||
wlcm = new ImageIcon(loader.getResource("wellcome.png"));
|
||||
|
||||
add(new JLabel(wlcm));
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
import Game.GameFrame;
|
||||
import Game.GamePanel;
|
||||
|
||||
|
||||
public class TESTER1 {
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
GameFrame f = new GameFrame();
|
||||
f.addKeyListener(f.gamePanel);
|
||||
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 272 KiB |
Binary file not shown.
After Width: | Height: | Size: 741 KiB |
Loading…
Reference in New Issue