Juego Java programación Tutorial - Flappy pájaro Redux (10 / 12 paso)

Paso 10: Añadir el ave

En este paso, agregamos el jugador del pájaro a la pantalla y su lógica de movimiento asociado. Esto no involucra mucho nuevo código, verá los cambios agregando KeyListener para permitir al usuario hacer el pájaro Salta y comenzar un nuevo juego, hacer algunas adiciones en gameScreen, agregar lógica para actualizar la puntuación de juego, y finalizando la clase PlayGameScreen.

En este paso se han introducido unas nuevas variables globales: BIRD_WIDTH, BIRD_HEIGHT, BIRD_X_LOCATION, BIRD_JUMP_DIFF, BIRD_FALL_DIFF y BIRD_JUMP_HEIGHT para las constantes; Juego, birdThrust, birdFired, liberada y birdYTracker para las variables globales.

Para empezar, vamos a añadir el detector de clave, así que importar las clases de KeyListener KeyEvent añadir KeyListener de las clases de implementación que utiliza TopClass, y crear por defecto keyPressed(...), keyReleased(...) y métodos keyTyped(...). Crear el esqueleto de estos tres métodos; no llenarlos sin embargo.

------
Dentro gameScreen, podemos hacer algunas adiciones para agregar funcionalidad de pájaro del juego. En primer lugar crear una instancia de aves cerca de la parte superior del método, crear dos variables para realizar el seguimiento X de aves (inmutable) y coordenadas Y. Vale la pena tener en cuenta, y = 0 es la parte superior de la pantalla, por lo que cuando el pájaro Salta, usted realmente disminuir coordenada de pájaro.

Dentro del juego, podrás ver varias adiciones de instrucción condicional pertinentes al pájaro; cada uno comprueba si estamos realmente en el juego y no la pantalla de bienvenida con! isSplash. En el primer condicional Probamos si el pájaro ha dicho mover (el usuario presiona la barra espaciadora, que cambia birdFired en true). Si es así, actualizamos la variable coordinación global aves Y la coordenada local clave y cambiar birdFired a false.

A continuación Probamos si el ave todavía ha de empuje, lo que miramos si el ave todavía está pasando de la anterior Pulse barra espaciadora. Si es así, comprobamos que si dice el pájaro para saltar otra vez obligará a lo de la parte superior de la pantalla. Si no, nos permite un salto completo. De lo contrario establezca coordenada de pájaro en cero (arriba de la pantalla), actualizar la variable global y cambiar birdThrust a false, como el pájaro no puede saltar más.

La siguiente instrucción de otra persona indica que ha completado la operación de salto de pájaro, así que actualizar la variable global y cambiar birdThrust a false, para que el pájaro no puede moverse verticalmente ya.

La siguiente persona si declaración dice que el pájaro caiga cuando no hay ningún comando emitido.

Después de ajustan las coordenadas BottomPipe y TopPipe X y Y, tenemos un rápido si declaración a hacer lo mismo para actualizar el objeto de pájaro X e Y coordenadas, así como estableciendo el objeto pájaro en págs.

En el condicionado final, llamamos al método updateScore en TopClass para probar si la puntuación debe ser actualizada. Tenga en cuenta que en la declaración de la condición para esta instrucción IF, comprobamos si la anchura del objeto de pájaro no es cero. Esto es para evitar la extraño carga de recursos surge un problema durante la detección de colisión en el paso siguiente. Sólo sabe que necesita ese código aquí.

------
Pasando al método updateScore, todo lo que hacemos aquí es de prueba si el objeto de aves ha pasado uno de los objetos BottomPipe. Para ello, comprobar si se encuentra entre el borde exterior y no más allá del borde exterior más X_MOVEMENT_DIFFERENCE. Si es dentro de esta gama, llamar al método incrementJump PlayGameScreen actualizar la puntuación del juego.

------
Señalamos tres claves para estar en uso en este programa: la barra espaciadora saltará el pájaro, la tecla 'b' comienza una nueva ronda después de que perder, y la tecla escape salga completamente del programa. En el método keyPressed, la primera instrucción IF comprueba que si se presiona la barra espaciadora, el juego se está escuchando (juego == true) y la barra espaciadora ha sido liberada, entonces haga lo siguiente:

* En primer lugar comprobar si birdThrust es cierto, que comprueba si el ave está todavía pasando de previamente pulsando la barra espaciadora. Si es así, cambie birdFired para fiel a registro el botón nuevo.
* Al cambiar la variable de birdThrust a fiel a iniciar el traslado de aves si no es ya
* Por último indicar que se ha registrado la barra de espacio y todas las operaciones relacionadas con completadas cambiando a false.

A continuación comprobamos si se ya no se juega (es decir, se detectó una colisión) y si se pulsa el botón 'b', entonces restablecemos el pájaro de altura partida de, quite cualquier empuje puede haber tenido cuando fue detectada la colisión, y simular la pulsación de startGame (reiniciar el juego no es diferente de prensado startGame).

Finalmente si se ha pulsado el botón escape, queremos salir completamente del juego, que se logra utilizando System.exit(0).

En keyReleased, simplemente registrar la barra de espacio siendo presionada por cambiar a verdadero (dentro de la instrucción IF).

 import java.awt.Dimension; import java.awt.Font; import java.awt.Image; import java.awt.Color; import java.awt.LayoutManager; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; public class TopClass implements ActionListener, KeyListener { //global constant variables private static final int SCREEN_WIDTH = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); private static final int SCREEN_HEIGHT = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); private static final int PIPE_GAP = SCREEN_HEIGHT/5; //distance in pixels between pipes private static final int PIPE_WIDTH = SCREEN_WIDTH/8, PIPE_HEIGHT = 4*PIPE_WIDTH; private static final int BIRD_WIDTH = 120, BIRD_HEIGHT = 75; private static final int UPDATE_DIFFERENCE = 25; //time in ms between updates private static final int X_MOVEMENT_DIFFERENCE = 5; //distance the pipes move every update private static final int SCREEN_DELAY = 300; //needed because of long load times forcing pipes to pop up mid-screen private static final int BIRD_X_LOCATION = SCREEN_WIDTH/7; private static final int BIRD_JUMP_DIFF = 10, BIRD_FALL_DIFF = BIRD_JUMP_DIFF/2, BIRD_JUMP_HEIGHT = PIPE_GAP - BIRD_HEIGHT - BIRD_JUMP_DIFF*2; //global variables private boolean loopVar = true; //false -> don't run loop; true -> run loop for pipes private boolean gamePlay = false; //false -> game not being played private boolean birdThrust = false; //false -> key has not been pressed to move the bird vertically private boolean birdFired = false; //true -> button pressed before jump completes private boolean released = true; //space bar released; starts as true so first press registers private int birdYTracker = SCREEN_HEIGHT/2 - BIRD_HEIGHT; private Object buildComplete = new Object(); //global swing objects private JFrame f = new JFrame("Flappy Bird Redux"); private JButton startGame; private JPanel topPanel; //declared globally to accommodate the repaint operation and allow for removeAll(), etc. //other global objects private static TopClass tc = new TopClass(); private static PlayGameScreen pgs; //panel that has the moving background at the start of the game /** * Default constructor */ public TopClass() { } /** * Main executable method invoked when running .jar file * args */ public static void main(String[] args) { //build the GUI on a new thread javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { tc.buildFrame(); //create a new thread to keep the GUI responsive while the game runs Thread t = new Thread() { public void run() { tc.gameScreen(true); } }; t.start(); } }); } /** * Method to construct the JFrame and add the program content */ private void buildFrame() { Image icon = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("resources/blue_bird.png")); f.setContentPane(createContentPane()); f.setResizable(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setAlwaysOnTop(false); f.setVisible(true); f.setMinimumSize(new Dimension(SCREEN_WIDTH*1/4, SCREEN_HEIGHT*1/4)); f.setExtendedState(JFrame.MAXIMIZED_BOTH); f.setIconImage(icon); f.addKeyListener(this); } private JPanel createContentPane() { topPanel = new JPanel(); //top-most JPanel in layout hierarchy topPanel.setBackground(Color.BLACK); //allow us to layer the panels LayoutManager overlay = new OverlayLayout(topPanel); topPanel.setLayout(overlay); //Start Game JButton startGame = new JButton("Start Playing!"); startGame.setBackground(Color.BLUE); startGame.setForeground(Color.WHITE); startGame.setFocusable(false); //rather than just setFocusabled(false) startGame.setFont(new Font("Calibri", Font.BOLD, 42)); startGame.setAlignmentX(0.5f); //center horizontally on-screen startGame.setAlignmentY(0.5f); //center vertically on-screen startGame.addActionListener(this); topPanel.add(startGame); //must add last to ensure button's visibility pgs = new PlayGameScreen(SCREEN_WIDTH, SCREEN_HEIGHT, true); //true --> we want pgs to be the splash screen topPanel.add(pgs); return topPanel; } /** * Implementation for action events */ public void actionPerformed(ActionEvent e) { if(e.getSource() == startGame) { //stop the splash screen loopVar = false; fadeOperation(); } else if(e.getSource() == buildComplete) { Thread t = new Thread() { public void run() { loopVar = true; gamePlay = true; tc.gameScreen(false); } }; t.start(); } } public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_SPACE && gamePlay == true && released == true){ //update a boolean that's tested in game loop to move the bird if(birdThrust) { //need this to register the button press and reset the birdYTracker before the jump operation completes birdFired = true; } birdThrust = true; released = false; } else if(e.getKeyCode() == KeyEvent.VK_B && gamePlay == false) { birdYTracker = SCREEN_HEIGHT/2 - BIRD_HEIGHT; //need to reset the bird's starting height birdThrust = false; //if user presses SPACE before collision and a collision occurs before reaching max height, you get residual jump, so this is preventative actionPerformed(new ActionEvent(startGame, -1, "")); } if(e.getKeyCode() == KeyEvent.VK_ESCAPE) { System.exit(0); } } public void keyReleased(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_SPACE) { released = true; } } public void keyTyped(KeyEvent e) { } /** * Perform the fade operation that take place before the start of rounds */ private void fadeOperation() { Thread t = new Thread() { public void run() { topPanel.remove(startGame); topPanel.remove(pgs); topPanel.revalidate(); topPanel.repaint(); //panel to fade JPanel temp = new JPanel(); int alpha = 0; //alpha channel variable temp.setBackground(new Color(0, 0, 0, alpha)); //transparent, black JPanel topPanel.add(temp); topPanel.add(pgs); topPanel.revalidate(); topPanel.repaint(); long currentTime = System.currentTimeMillis(); while(temp.getBackground().getAlpha() != 255) { if((System.currentTimeMillis() - currentTime) > UPDATE_DIFFERENCE/2) { if(alpha < 255 - 10) { alpha += 10; } else { alpha = 255; } temp.setBackground(new Color(0, 0, 0, alpha)); topPanel.revalidate(); topPanel.repaint(); currentTime = System.currentTimeMillis(); } } topPanel.removeAll(); topPanel.add(temp); pgs = new PlayGameScreen(SCREEN_WIDTH, SCREEN_HEIGHT, false); pgs.sendText(""); //remove title text topPanel.add(pgs); while(temp.getBackground().getAlpha() != 0) { if((System.currentTimeMillis() - currentTime) > UPDATE_DIFFERENCE/2) { if(alpha > 10) { alpha -= 10; } else { alpha = 0; } temp.setBackground(new Color(0, 0, 0, alpha)); topPanel.revalidate(); topPanel.repaint(); currentTime = System.currentTimeMillis(); } } actionPerformed(new ActionEvent(buildComplete, -1, "Build Finished")); } }; t.start(); } /** * Method that performs the splash screen graphics movements */ private void gameScreen(boolean isSplash) { BottomPipe bp1 = new BottomPipe(PIPE_WIDTH, PIPE_HEIGHT); BottomPipe bp2 = new BottomPipe(PIPE_WIDTH, PIPE_HEIGHT); TopPipe tp1 = new TopPipe(PIPE_WIDTH, PIPE_HEIGHT); TopPipe tp2 = new TopPipe(PIPE_WIDTH, PIPE_HEIGHT); Bird bird = new Bird(BIRD_WIDTH, BIRD_HEIGHT); //variables to track x and y image locations for the bottom pipe int xLoc1 = SCREEN_WIDTH+SCREEN_DELAY, xLoc2 = (int) ((double) 3.0/2.0*SCREEN_WIDTH+PIPE_WIDTH/2.0)+SCREEN_DELAY; int yLoc1 = bottomPipeLoc(), yLoc2 = bottomPipeLoc(); int birdX = BIRD_X_LOCATION, birdY = birdYTracker; //variable to hold the loop start time long startTime = System.currentTimeMillis(); while(loopVar) { if((System.currentTimeMillis() - startTime) > UPDATE_DIFFERENCE) { //check if a set of pipes has left the screen //if so, reset the pipe's X location and assign a new Y location if(xLoc1 < (0-PIPE_WIDTH)) { xLoc1 = SCREEN_WIDTH; yLoc1 = bottomPipeLoc(); } else if(xLoc2 < (0-PIPE_WIDTH)) { xLoc2 = SCREEN_WIDTH; yLoc2 = bottomPipeLoc(); } //decrement the pipe locations by the predetermined amount xLoc1 -= X_MOVEMENT_DIFFERENCE; xLoc2 -= X_MOVEMENT_DIFFERENCE; if(birdFired && !isSplash) { birdYTracker = birdY; birdFired = false; } if(birdThrust && !isSplash) { //move bird vertically if(birdYTracker - birdY - BIRD_JUMP_DIFF < BIRD_JUMP_HEIGHT) { if(birdY - BIRD_JUMP_DIFF > 0) { birdY -= BIRD_JUMP_DIFF; //coordinates different } else { birdY = 0; birdYTracker = birdY; birdThrust = false; } } else { birdYTracker = birdY; birdThrust = false; } } else if(!isSplash) { birdY += BIRD_FALL_DIFF; birdYTracker = birdY; } //update the BottomPipe and TopPipe locations bp1.setX(xLoc1); bp1.setY(yLoc1); bp2.setX(xLoc2); bp2.setY(yLoc2); tp1.setX(xLoc1); tp1.setY(yLoc1-PIPE_GAP-PIPE_HEIGHT); //ensure tp1 placed in proper location tp2.setX(xLoc2); tp2.setY(yLoc2-PIPE_GAP-PIPE_HEIGHT); //ensure tp2 placed in proper location if(!isSplash) { bird.setX(birdX); bird.setY(birdY); pgs.setBird(bird); } //set the BottomPipe and TopPipe local variables in PlayGameScreen by parsing the local variables pgs.setBottomPipe(bp1, bp2); pgs.setTopPipe(tp1, tp2); if(!isSplash && bird.getWidth() != -1) { //need the second part because if bird not on-screen, cannot get image width and have cascading error in collision updateScore(bp1, bp2, bird); } //update pgs's JPanel topPanel.revalidate(); topPanel.repaint(); //update the time-tracking variable after all operations completed startTime = System.currentTimeMillis(); } } } /** * Calculates a random int for the bottom pipe's placement * int */ private int bottomPipeLoc() { int temp = 0; //iterate until temp is a value that allows both pipes to be onscreen while(temp <= PIPE_GAP+50 || temp >= SCREEN_HEIGHT-PIPE_GAP) { temp = (int) ((double) Math.random()*((double)SCREEN_HEIGHT)); } return temp; } /** * Method that checks whether the score needs to be updated * bp1 First BottomPipe object * bp2 Second BottomPipe object * bird Bird object */ private void updateScore(BottomPipe bp1, BottomPipe bp2, Bird bird) { if(bp1.getX() + PIPE_WIDTH < bird.getX() && bp1.getX() + PIPE_WIDTH > bird.getX() - X_MOVEMENT_DIFFERENCE) { pgs.incrementJump(); } else if(bp2.getX() + PIPE_WIDTH < bird.getX() && bp2.getX() + PIPE_WIDTH > bird.getX() - X_MOVEMENT_DIFFERENCE) { pgs.incrementJump(); } } } 

Por último en este paso, terminaremos el código para la clase de PlayGameScreen. Para terminar esto, creamos un objeto global de aves, agregue una variable global que sigue la partitura, crear una variable global para la anchura del texto puntuación, agregar unas líneas de código en el método paintComponent y crear tres métodos simples.

En paintComponent, agregamos la instrucción condicional para comprobar si ya no estamos en la pantalla de bienvenida y asegurarse que el ave no es null. Si, dibujamos el objeto Ave. En el bloque try-catch, asignar scoreWidth basado en la puntuación actual utiliza FontMetrics. Por último, si no estamos en la pantalla de bienvenida, dibujar el número de saltos exitosos en la pantalla.

Ahora creamos tres métodos simples. En primer lugar, setBird establece el objeto de aves dentro de PlayGameScreen, incrementJump incrementa la variable global del salto y getScore devuelve el número de saltos exitosos (sin funcionalidad en este juego).

 import javax.swing.*; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Color; public class PlayGameScreen extends JPanel { //default reference ID private static final long serialVersionUID = 1L; //global variables private int screenWidth, screenHeight; private boolean isSplash = true; private int successfulJumps = 0; private String message = "Flappy Bird"; private Font primaryFont = new Font("Goudy Stout", Font.BOLD, 56), failFont = new Font("Calibri", Font.BOLD, 56); private int messageWidth = 0, scoreWidth = 0; private BottomPipe bp1, bp2; private TopPipe tp1, tp2; private Bird bird;</p><p> /** * Default constructor for the PlayGameScreen class */ public PlayGameScreen(int screenWidth, int screenHeight, boolean isSplash) { this.screenWidth = screenWidth; this.screenHeight = screenHeight; this.isSplash = isSplash; } /** * Manually control what's drawn on this JPanel by calling the paintComponent method * with a graphics object and painting using that object */ public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(new Color(89, 81, 247)); //color for the blue sky g.fillRect(0, 0, screenWidth, screenHeight*7/8); //create the sky rectangle g.setColor(new Color(147, 136, 9)); //brown color for ground g.fillRect(0, screenHeight*7/8, screenWidth, screenHeight/8); //create the ground rectangle g.setColor(Color.BLACK); //dividing line color g.drawLine(0, screenHeight*7/8, screenWidth, screenHeight*7/8); //draw the dividing line //objects must be instantiated before they're drawn! if(bp1 != null && bp2 != null && tp1 != null && tp2 != null) { g.drawImage(bp1.getPipe(), bp1.getX(), bp1.getY(), null); g.drawImage(bp2.getPipe(), bp2.getX(), bp2.getY(), null); g.drawImage(tp1.getPipe(), tp1.getX(), tp1.getY(), null); g.drawImage(tp2.getPipe(), tp2.getX(), tp2.getY(), null); } if(!isSplash && bird != null) { g.drawImage(bird.getBird(), bird.getX(), bird.getY(), null); } //needed in case the primary font does not exist try { g.setFont(primaryFont); FontMetrics metric = g.getFontMetrics(primaryFont); messageWidth = metric.stringWidth(message); scoreWidth = metric.stringWidth(String.format("%d", successfulJumps)); } catch(Exception e) { g.setFont(failFont); FontMetrics metric = g.getFontMetrics(failFont); messageWidth = metric.stringWidth(message); scoreWidth = metric.stringWidth(String.format("%d", successfulJumps)); } g.drawString(message, screenWidth/2-messageWidth/2, screenHeight/4); if(!isSplash) { g.drawString(String.format("%d", successfulJumps), screenWidth/2-scoreWidth/2, 50); } } /** * Parsing method for PlayGameScreen's global BottomPipe variables * bp1 The first BottomPipe * bp2 The second BottomPipe */ public void setBottomPipe(BottomPipe bp1, BottomPipe bp2) { this.bp1 = bp1; this.bp2 = bp2; } /** * Parsing method for PlayGameScreen's global TopPipe variables * tp1 The first TopPipe * tp2 The second TopPipe */ public void setTopPipe(TopPipe tp1, TopPipe tp2) { this.tp1 = tp1; this.tp2 = tp2; } /** * Parsing method for PlayGameScreen's global Bird variable * bird The Bird object */ public void setBird(Bird bird) { this.bird = bird; } /** * Method called to invoke an increase in the variable tracking the current * jump score */ public void incrementJump() { successfulJumps++; } /** * Method called to return the current jump score * */ public int getScore() { return successfulJumps; } /** * Method called to parse a message onto the screen * message The message to parse */ public void sendText(String message) { this.message = message; } } 

Artículos Relacionados

Flappy pájaro Valentín Pop-Up tarjeta cómo 3D de Kirigami (Flappy de San Valentín).

Flappy pájaro Valentín Pop-Up tarjeta cómo 3D de Kirigami (Flappy de San Valentín).

Una rápida tarjeta de San Valentín hice basado en el popular juego de pájaros Flappy.Compartir en FACEBOOK: http://on.fb.me/15TrVYfTWEET: http://bit.ly/15Ts5P6MENÉAME: http://bit.ly/16qHt5LTUMBLR: http://bit.ly/10K8fhzDescargar el patrón gratis aquí:
Java programación Part2(Text and running)

Java programación Part2(Text and running)

En su java.java tendrás el código-la clase java {}público principal vacío estático (String args[]) {}}}Así que si vamos a hacer programas en java tenemos texto y el código para una simple línea de texto es-System.out.println ("programación en Java Ho
Java programación 2 | Cómo trabajar con Eclipse (Java)

Java programación 2 | Cómo trabajar con Eclipse (Java)

Hoy vamos a aprender cómo hacer un proyecto en Eclipse y cómo usar Java! Usted necesita descargar Eclipse (https://eclipse.org/downloads/) y Java (https://www.java.com/download/).Paso 1: Hacer una carpeta!El primer paso es hacer una carpeta. Puede co
Utilice el Bloc de notas y comandos para Java programación

Utilice el Bloc de notas y comandos para Java programación

Hola, en este instructable, les mostraré cómo crear y ejecutar un programa creado en java utilizando el Bloc de notas. Se necesita abrir algunas cosas:-Bloc de notas-El símbolo del sistemaPaso 1: Crear el programa de Para este paso, utilice el Bloc d
Java programación - interés compuesto

Java programación - interés compuesto

Hola en este Instructable mostrará usted cómo crear un programa en Java que calcula el interés aplicado al capital depositado a largo del tiempo.  Antes de empezar este Instructable necesita cosas:1. un ordenador de sobremesa o portátiles2. un compil
Programación Tutorial [Scratch] - Cookie Clicker -

Programación Tutorial [Scratch] - Cookie Clicker -

¡ Hola chicos!Hoy te enseñaré cómo programar a tu clicker propia galleta, desde cero, usando el lenguaje de programación llamado scratch!Suscríbete al canal de YouTube para más tutoriales!-----CreateTech-----
Java programación Parte1 (configurar Eclipse)

Java programación Parte1 (configurar Eclipse)

Antes de empezar a programar java tenemos que configurar un ide de java. Se llama eclipse se puede descargar aquí.Paso 1: Crear un proyecto deAhora que ya tienes descargado eclipse tenemos que crear un proyecto java. El nombre java. Ahora, haga clic
Juego de tronos Dragon - Tutorial de maquillaje SFX

Juego de tronos Dragon - Tutorial de maquillaje SFX

Emparejar con alguien va como Daenerys Targaryen y ser un dragón épico en la fiesta de halloween este año!Colorida y detallada y lo mejor de todo - puede comer y beber sin problemas.Preparaciones de tiempo alrededor de 1, 5hTiempo de aplicación aprox
Volver a entrar pájaros Flappy

Volver a entrar pájaros Flappy

Paso 1: Ir a la App Store Go to the app store. A continuación, haga clic en compra. A continuación encuentra flappy pájaro en compras. Finalmente golpéelo suavemente y deje que se cargue.Paso 2: Juego de pájaros Flappy Enjoy
Cómo hacer backup progreso pájaro Flappy y transferirlo a otro iPhone

Cómo hacer backup progreso pájaro Flappy y transferirlo a otro iPhone

Flappy pájaro ha convertido rápidamente en uno de los juegos más populares para el iPhone.Su creador lo quitaron de la App Store, sin embargo ha puesto prometido regreso del juego este que viene agosto.Si todavía tienes la versión antigua del juego g
Cómo jugar Java [ME] Juegos en una PSP!

Cómo jugar Java [ME] Juegos en una PSP!

Esto es relativamente fácil pero tu PSP tiene custom firmware. Son el tipo de juegos java, todo bien pero algunos funcionan bien y otras no. Personas hacen esto una de las razones principales es que puede ejecutar mini opera en tu PSP utilizando esto
Cómo descargar pájaros Flappy

Cómo descargar pájaros Flappy

Gracias por conocer esta revisión Flappy Bird descargar¿Quieres descargar pájaros Flappy gratis? ¿Descarga directa, no hay encuestas?Asegúrese de echar un vistazo a la revisión del video sobre para la historia completa sobre descargar Flappy pájaro l
Divertido juego con arduino y procesamiento

Divertido juego con arduino y procesamiento

Este tutorial le mostrará cómo hacer una primera persona FPS-shooter en el proceso con la ayuda de un arduino. Este proyecto nos fue entregado como un examen final en un curso de especialización técnica, (Bachillerato).Video del proyecto! :) (Difícil
Cómo escribir un programa de Tic-Tac-Toe en Java

Cómo escribir un programa de Tic-Tac-Toe en Java

Introducción:Tres en raya es un juego muy común que es bastante fácil de jugar. Las reglas del juego son simples y bien conocidos. Debido a estas cosas, Tic-Tac-Toe es bastante fácil de código de arriba. En este tutorial, buscará cómo codificar un tr