trabajo cinco

Upload: paromarye1

Post on 10-Jan-2016

216 views

Category:

Documents


0 download

DESCRIPTION

Trabajo Cinco

TRANSCRIPT

Trabajo Numero 5:Elaborar un juego de video conocido como el Gusano o Gusanito. El Juego consiste en que el jugador o usuario debe controlar una gusano mediante las flechas del teclado y maniobrar por las pantalla (80 x 24) y pasar sobre manzanas (elemento) para obtener mas puntos.

Reglas:

1) El jugador pierde la partida al chocar con una de las paredes que encierran la pantalla. Al perder un mensaje anuncia al jugador que perdio.

2) El jugador pierde la partida cuando el gusano choca con su propio cuerpo. Al perder un mensaje anuncia al jugador que perdio.

3) A cada manzana que el gusano come este crece en una unidad. Las manzanas aparecen de forma aleatoria y una despues de otra.4) Cada manzana que este consume aade un punto al score del ugador al llegar a un numero determinado , se le avisa al jugador que este ha ganado y termina el juego.

Algoritmo:

FRAME:

package vibora;

import javax.swing.*;

public class Frame extends JFrame {

// Metodo constructor

Frame(JPanel panel){

super("Snake");

this.setContentPane(panel);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setResizable(false);

this.setBounds(0,0,810,350);

this.setVisible(true);

}

}

MAIN:

package vibora;

public class Main {

public static void main(String[] args) {

Panel panel = new Panel();

Frame frame = new Frame(panel);

}

}

LISTA SIMPLE:package vibora;

public class ListaSimple {

Nodo lista;

public Nodo getLista() {

return lista;

}

public void setLista(Nodo lista) {

this.lista = lista;

}

void agregarFinal(Nodo n) {

Nodo aux = lista;

if (lista != null) {

while (aux.sig != null) {

aux = aux.sig;

}

aux.sig = n;

} else {

n.sig = lista;

lista = n;

}

}

int obtenerCodigo() {

int c = 0;

Nodo aux = lista;

if (lista == null) {

} else {

while (aux != null) {

c++;

aux = aux.sig;

}

}

return c + 1;

}

}PANEL:

package vibora;

import java.awt.Color;

import java.awt.event.*;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.*;

public class Panel extends JPanel implements KeyListener {

int n = 80, m = 24;

JButton[][] btn = new JButton[n][m];

JTextField t = new JTextField();

JLabel label = new JLabel("Puntaje = 0");

int CabezaX = 0;

int CabezaY = 0;

int manzanaX;

int manzanaY;

Mover mov = new Mover();

ListaSimple lista = new ListaSimple();

int puntos = 0;

String marcha = "derecha";

Panel() {

label.setBounds(100, 250, 200, 50);

this.add(label);

mov.start();

this.setLayout(null);

t.requestFocus();

t.addKeyListener(this);

this.add(t);

for (int x = 0; x < n; x++) {

for (int y = 0; y < m; y++) {

btn[x][y] = new JButton("");

btn[x][y].setBounds(x * 10, y * 10, 10, 10);

this.add(btn[x][y]);

btn[x][y].setBackground(Color.WHITE);

btn[x][y].setBorder(null);

}

}

CabezaX = n / 2;

CabezaY = m / 2;

Nodo cabeza;

for (int i = 0; i < 3; i++) {

cabeza = new Nodo();

cabeza.setX(CabezaX - i);

cabeza.setY(CabezaY);

lista.agregarFinal(cabeza);

btn[cabeza.getX()][cabeza.getY()].setBackground(Color.BLUE);

}

for (int x = 0; x < n; x++) {

for (int y = 0; y < m; y++) {

if ((x == 4||x == 30||x == 45||x == 60||x==75) && (y < 8||y>15)) {

btn[x][y].setBackground(Color.BLACK);

} else {

}

}

}

generarManzana();

}

void generarManzana() {

manzanaX = aleatorioX();

manzanaY = aleatorioY();

dibujarManzana();

}

void dibujarManzana() {

if (btn[manzanaX][manzanaY].getBackground() == Color.BLACK || btn[manzanaX][manzanaY].getBackground() == Color.BLUE) {

generarManzana();

} else {

btn[manzanaX][manzanaY].setBackground(Color.RED);

}

}

public void keyTyped(KeyEvent e) {

}

public void keyPressed(KeyEvent e) {

switch (e.getKeyCode()) {

case 37:

if (!marcha.equals("derecha")) {

mov.Opcion(37);

}

break;

case 38:

if (!marcha.equals("abajo")) {

mov.Opcion(38);

}

break;

case 39:

if (!marcha.equals("izquierda")) {

mov.Opcion(39);

}

break;

case 40:

if (!marcha.equals("arriba")) {

mov.Opcion(40);

}

break;

}

}

public void keyReleased(KeyEvent e) {

}

void crecer() {

puntos++;

label.setText("Puntaje = " + puntos);

if(puntos==20){

JOptionPane.showMessageDialog(null, "Juego Termino con Exito");

mov.detenElHilo();

}

Nodo n = new Nodo();

n.setCodigo(lista.obtenerCodigo());

lista.agregarFinal(n);

generarManzana();

}

void obtenerLogitudCuerpo() {

Nodo aux = lista.getLista();

}

void validar() {

if (btn[CabezaX][CabezaY].getBackground() == Color.WHITE) {

} else if (btn[CabezaX][CabezaY].getBackground() == Color.BLUE || btn[CabezaX][CabezaY].getBackground() == Color.BLACK) {

JOptionPane.showMessageDialog(null, "Game Over");

mov.detenElHilo();

} else if (btn[CabezaX][CabezaY].getBackground() == Color.RED) {

crecer();

}

limpiar();

}

void derecha() {

CabezaX++;

validar();

}

void izquierda() {

CabezaX--;

validar();

}

void abajo() {

CabezaY++;

validar();

}

void arriba() {

CabezaY--;

validar();

}

void limpiar() {

for (int x = 0; x < n; x++) {

for (int y = 0; y < m; y++) {

btn[x][y].setBackground(Color.WHITE);

if ((x == 4||x == 30||x == 45||x == 60||x==75) && (y < 8||y>15)) {

btn[x][y].setBackground(Color.BLACK);

} else {

}

}

}

dibujarManzana();

if (lista.getLista() != null) {

Nodo aux = lista.getLista();

while (aux.sig != null) {

aux.setX(aux.sig.getX());

aux.setY(aux.sig.getY());

btn[aux.getX()][aux.getY()].setBackground(Color.BLUE);

if (aux.getX() == 0 && aux.getY() == 0) {

btn[aux.getX()][aux.getY()].setBackground(Color.WHITE);

}

aux = aux.sig;

}

aux.setX(CabezaX);

aux.setY(CabezaY);

btn[CabezaX][CabezaY].setBackground(Color.BLUE);

}

}

int aleatorioX() {

return (int) (Math.random() * n);

}

int aleatorioY() {

return (int) (Math.random() * m);

}

class Mover extends Thread {

private boolean continuar = true;

private int tecla = 0;

public void detenElHilo() {

continuar = false;

}

public void Opcion(int x) {

tecla = x;

}

public void run() {

while (continuar) {

try {

Thread.currentThread().sleep(50);

switch (tecla) {

case 37:

if (CabezaX >= 1) {

izquierda();

marcha = "izquierda";

} else {

JOptionPane.showMessageDialog(null, "Game Over");

this.stop();

}

break;

case 38:

if (CabezaY >= 1) {

arriba();

marcha = "arriba";

} else {

JOptionPane.showMessageDialog(null, "Game Over");

this.stop();

}

break;

case 39:

if (CabezaX