El documento presenta un proyecto para desarrollar un juego de tres en raya orientado a objetos en Java. Se describen las clases necesarias como Raya y Maticruzgudinhernad, que implementan el tablero de juego y la interfaz gráfica respectivamente. El juego permitirá a dos jugadores ingresar sus nombres y jugar de forma alternada hasta que uno complete tres en raya de forma horizontal, vertical o diagonal, resultando en un ganador.
Ejercicios resueltos en el Laboratorio de estructuras struct registrosrasave
Estructuras struct lenguaje C, declaración de estructuras struct, definición de estructuras struct, asignación de estructuras struct, acceso a los miembros de la estructura struct, operadores para el acceso a estructuras struct, operador punto, operador flecha
Un disparador es un objeto de base de datos con nombre que se asocia a una tabla, y se activa cuando ocurre un evento en particular para la tabla. Algunos usos para los disparadores es verificar valores a ser insertados o llevar a cabo cálculos sobre valores involucrados en una actualización.
Aqui les dejo un ejemplo de Trigger, que puede servir de referencia, como elemento Accounting, de seguridad para algunas tablas de sus bases de Datos
Ejercicios resueltos en el Laboratorio de estructuras struct registrosrasave
Estructuras struct lenguaje C, declaración de estructuras struct, definición de estructuras struct, asignación de estructuras struct, acceso a los miembros de la estructura struct, operadores para el acceso a estructuras struct, operador punto, operador flecha
Un disparador es un objeto de base de datos con nombre que se asocia a una tabla, y se activa cuando ocurre un evento en particular para la tabla. Algunos usos para los disparadores es verificar valores a ser insertados o llevar a cabo cálculos sobre valores involucrados en una actualización.
Aqui les dejo un ejemplo de Trigger, que puede servir de referencia, como elemento Accounting, de seguridad para algunas tablas de sus bases de Datos
Clase 12 arduino y el display de 7 segmentos controlado por puerto serialMarlonAguilarGmez
Clase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serial
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• Herencia
• Polimorfismo
Creado por Ing. Alvaro Enrique Ruano
Clase 12 arduino y el display de 7 segmentos controlado por puerto serialMarlonAguilarGmez
Clase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serialClase 12 arduino y el display de 7 segmentos controlado por puerto serial
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• Herencia
• Polimorfismo
Creado por Ing. Alvaro Enrique Ruano
Creación de juegos mediante la plataforma XNA de Microsoft Visual Studio
Links para descargar material:
Parte 01: https://www.dropbox.com/s/2b3f27izg3wfqws/01.XNA.zip
Parte 02: https://www.dropbox.com/s/ep3634jsjullkbs/02.XNA.zip
Parte 03: https://www.dropbox.com/s/9e3q068t6mlkted/03.XNA.zip
Parte 04: https://www.dropbox.com/s/u4navlzlhtecjm0/04.XNA.zip
Parte 05: https://www.dropbox.com/s/oqjll5c73kbvu1j/05.XNA.zip
Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200rasave
Estructuras struct lenguaje C, declaración de estructuras struct, definición de estructuras struct, asignación de estructuras struct, acceso a los miembros de la estructura struct, operadores para el acceso a estructuras struct, operador punto, operador flecha. Manejo de estructuras a través de módulos. Paso de Parámetros.
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...rasave
Estructuras struct lenguaje C, declaración de estructuras struct, definición de estructuras struct, asignación de estructuras struct, acceso a los miembros de la estructura struct, operadores para el acceso a estructuras struct, operador punto, operador flecha. Manejo de estructuras a través de módulos. Paso de Parámetros. typedef.
Creación de juegos mediante la plataforma XNA de Microsoft Visual Studio
Links para descargar material:
Parte 01: https://www.dropbox.com/s/2b3f27izg3wfqws/01.XNA.zip
Parte 02: https://www.dropbox.com/s/ep3634jsjullkbs/02.XNA.zip
Parte 03: https://www.dropbox.com/s/9e3q068t6mlkted/03.XNA.zip
Parte 04: https://www.dropbox.com/s/u4navlzlhtecjm0/04.XNA.zip
Parte 05: https://www.dropbox.com/s/oqjll5c73kbvu1j/05.XNA.zip
1. Roberto Matías
Edisson Gudiño
Victoria Hernández
Kevin Cruz
Docente: Ing. Orlando Barcia Ayala
2. *** Idea Base Del Proyecto ***
Efectuar un juego de tres en RAYA REALIZANDO UN ANALISIS, DISEÑO E
Implementación orientado a objetos. Las relaciones son las siguientes:
Los Juegos de Computadora se pueden clasificar en Juegos Totalmente
aleatorios y juegos de destrezas: el juego de tres en raya es un juego de
destreza, en este juego participan dos jugadores, de los cuales uno
incluso puede ser el computador.
x 0
x 0
x
Al iniciar el juego se solicitaran los nombres d cada jugador y su Nick. En
el juego se debe especificar cuál de los jugadores es el primero (por
elección o al azar). Así también puede seleccionarse que uno de los
jugadores sea la computadora (nombre y Nick será “computer”).
Las clases q implementan en el juego deber tener un arreglo privado
bidimensional de enteros con un tamaño de 3 por 3 que simulara el
tablero del juego. El constructor debe inicializar el arreglo con creso: Los
jugadores tiene un orden de juego especifico, el primer jugado realiza un
movimiento y mostrara un 1 en el cuadro que desee escoger (ver nota al
Final).
Cuando toque al segundo jugador, este realizara un movimiento en el
cuadro que desea escoger y mostrara un 2 *. Cada movimiento debe
validarse para q se realice un cuadro vacío, mostrando los mensajes de
advertencias correspondientes.
3. Al realizar cada movimiento el juego debe determinar si se ha ganado o
existe un empate. Las clases deben tener atributos, métodos,
constructores y sobrecargas. Debe Utilizar método setter, getter,
sobrecarga de métodos. Y constructores, así como una interfaz de
usuario básica.
Nota: La interfaz grafía de usuario puede mostrar el tablero del juego de
ajedrez como un conjunto de botones con o sin imágenes ( a criterio del
Programador) o un conjunto de cuadros de texto.
1. Implementamos en el editor de NetBeans IDE 6.8
Creamos los paquetes Necesarios q pide el Software
4. CODIGO FUENTE:
package mathias.cruz.gudinho.hernandez;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Maticruzgudinhernad extends JFrame implements ActionListener {
//Etiquetas del JFrame
JLabel l1, l2, l3, l4, l5;
// Cuadros de Textos
JTextField jugador1, jugador2;
//Opciones de radio
JRadioButton computador, jugador;
ButtonGroup opciones;
//Boton empezar a jugar
JButton jugar;
public Maticruzgudinhernad() {
crearJugadores();
}
public void crearJugadores() {
setTitle("Tres en Raya");
//setLocationRelativeTo(null);
setSize(300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(8, 2));
// Creacion de las etiquetas de la pantalla y asignamos tamaño de la etiqueta
l1 = new JLabel("* JUGADORES *");
l1.setSize(100, 20);
l2 = new JLabel("Jugador # 1");
l2.setSize(100, 20);
l4 = new JLabel("Jugador # 2");
l4.setSize(100, 20);
5. //Fuentes a los controles JLabel
l1.setFont(new Font("Algerian", 1, 18));
l1.setForeground(Color.blue);
l2.setFont(new Font("Algerian", 1, 14));
l4.setFont(new Font("Algerian", 1, 14));
// Creacion de los Cuadros de texto para el ingreso de nombres
jugador1 = new JTextField("");
jugador1.setSize(50, 20);
jugador2 = new JTextField("");
jugador2.setSize(50, 20);
// Opciones, creacion de radio button
opciones = new ButtonGroup();
computador = new JRadioButton("Computador");
computador.setSelected(true);
computador.setSize(100, 20);
jugador = new JRadioButton("Jugador");
jugador.setSize(100, 20);
opciones.add(computador);
opciones.add(jugador);
// Boton para jugar
jugar = new JButton("Jugar");
jugar.setSize(50, 20);
// Añadimos el listener al boton
jugar.addActionListener(this);
// Añadimos los controles al JFrame
add(l1);
add(new Label());
add(l2);
add(jugador1);
add(l4);
add(new Label());
add(computador);
add(new Label());
add(jugador);
add(jugador2);
add(jugar);
setVisible(true);
}
6. // Metodos para manejar Eventos//
public void actionPerformed(ActionEvent e) {
//Validar que se haya ingresado el nick al jugador 1
if (jugador1.getText().trim().equals("")) {
JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 1");
} else {
//Validar que el segundo jugador haya ingresado nombre si se selecciono jugar
contra otro jugador
if (jugador.isSelected() && jugador2.getText().trim().equals("")) {
JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 2");
} else {
//Sortear quien juega primero aleatoriamente
int empieza = (int) (Math.random() * 2 + 1);
String jug1,jug2;
//Cojemos el nombre del jugador que va a empezar
//Si es uno escojemos el nombre que ingreso el primer jugador
if (empieza == 1) {
jug1 = jugador1.getText();
if (jugador.isSelected() && !jugador2.getText().trim().equals("")) {
jug2=jugador2.getText();
} else {
jug2="Computer";
}
} else {
//Si es 2 se verifica si se juga contra otro jugador o contra la computadora
if (jugador.isSelected() && !jugador2.getText().trim().equals("")) {
jug1=jugador2.getText();
} else {
jug1="Computer";
}
jug2 = jugador1.getText();
}
JOptionPane.showMessageDialog(null, "Empieza el jugador: "+jug1);
setVisible(false);
new Raya(jug1,jug2);
}
}
}
7. public static void main(String[] args) {
new Maticruzgudinhernad();
}
}
Tenemos L a Clase Raya:
package mathias.cruz.gudinho.hernandez;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Raya extends JFrame implements ActionListener {
// Botones
JButton botones[][];
JPanel p1;
//Tamaño del Tablero de Tres en Raya
int a = 3;
//Matriz del tablero de Tres en raya
private int tablero[][];
//Iconos para los botones
ImageIcon equis, circulo;
//Nicks de los jugadores
String nick1, nick2;
int turno = 1;
public Raya(String jug1, String jug2) {
nick1 = jug1;
nick2 = jug2;
System.out.println(jug1);
System.out.println(jug2);
dibujarTablero();
jugar(nick1);
}
8. public void dibujarTablero() {
//Crear matriz de posiciones del tablero
tablero = new int[a][a];
// Crear iconos para los botones
equis = new ImageIcon("src/mathias/cruz/gudinho/hernandez/equis.gif");
circulo = new ImageIcon("src/mathias/cruz/gudinho/hernandez/circulo.gif");
//Iniciar todo el tablero en cero (Si esta cero se puede escojer si es 1 no se puede
escojer
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
tablero[i][j] = 0;
}
}
setTitle("Tres en Raya");
//setLocationRelativeTo(null);
setSize(200, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(a, 2));
botones = new JButton[a][a];
// Creacion de los botones del tablero
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
//Creamos el boton
botones[i][j] = new JButton();
//Le damos el oyente de evento
botones[i][j].addActionListener(this);
//Le damos un nombre a la accion
botones[i][j].setActionCommand("" + i + j);
botones[i][j].setSize(200, 200);
add(botones[i][j]);
}
}
setVisible(true);
}
9. // Metodo para presentar el jugador que tiene el turno de jugar
public void jugar(String jugador) {
JOptionPane.showMessageDialog(null, "Turno: " + jugador);
}
//Variables que sirven para saber si un jugador ha hecho tres en raya en alguna
// de dos forma vertical, horizontal
boolean ganaron1, ganaron2;
// Variable para controlar si algun jugador ya gano
boolean ganaron = false;
public void validarTablero() {
int i, j;
for (i = 0; i < a; i++) {
ganaron1 = true;
ganaron2 = true;
for (j = 0; j < a - 1; j++) {
//validar si se hizo tres en raya de forma horizontal
ganaron1 = (tablero[i][j] == tablero[i][j + 1]) && ganaron1 && tablero[i][j] !=
0;
//validar si se hizo tres en raya de forma vertical
ganaron2 = (tablero[j][i] == tablero[j + 1][i]) && ganaron2 && tablero[j][i] !=
0;
}
//Si se hizo tres en raya de forma horizontal o vertical presentamos un mensaje
if (ganaron1 || ganaron2) {
//Asignamos true a la variable ganaron para indicar que un jugador ya gano
ganaron = true;
//Si el turno era 1 gana el jugador 1 caso contrario el jugador 2
if (turno == 1) {
JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick1);
break;
} else {
JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick2);
break;
}
}
}
10. //Si no se hizo tres en raya de forma horizontal valido si se hizo tres en raya
// de forma diagonal
if (!ganaron) {
if ((tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2] &&
tablero[1][1] != 0) || (tablero[2][0] == tablero[1][1] && tablero[1][1] == tablero[0][2]
&& tablero[1][1] != 0)) {
//Asignamos true a la variable ganaron para indicar que un jugador ya gano
ganaron = true;
//Si el turno era 1 gana el jugador 1 caso contrario el jugador 2
if (turno == 1) {
JOptionPane.showMessageDialog(null, "Wiiner!!! Jugador: " + nick1);
} else {
JOptionPane.showMessageDialog(null, "Winner!!!! Jugador: " + nick2);
}
}
}
}
// Metodo para controlar el turno de juego
public void verificarTurno() {
// Verificar a quien le toca jugar
if (turno == 1) {
turno = 2;
jugar(nick2);
} else {
turno = 1;
jugar(nick1);
}
}
//Variable para saber si se escogio un cuadro vacío del tablero
boolean correcto;
11. // Metodo oyente para eventos de dar clic en los botones del tabler0
public void actionPerformed(ActionEvent e) {
if (!ganaron) {
correcto=false;
//Preguntar por que boton se dio clic y si esta
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
if (e.getActionCommand().equals("" + i + j)) {
if (tablero[i][j] == 0) {
tablero[i][j] = turno;
if (turno == 1) {
botones[i][j].setIcon(equis);
} else {
botones[i][j].setIcon(circulo);
}
correcto=true;
} else {
JOptionPane.showMessageDialog(null,"Debe escoger otro cuadro este
ya ha sido escogido");
}
}
}
}
if(correcto){
validarTablero();
if (!ganaron) {
verificarTurno();
}
}
}
}
}
13. Bueno el principal Objetivo del Proyecto es crecer como estudiantes de la UPS. En base a
nuestro desempeño q le estamos poniendo a este proyecto el cual nos servirá para un futuro
ponernos nuestras metas. El Principal objetivo del proyecto es cumplir con las necesidades q
este pida y dar con todos los requerimientos posibles ya sean gráfica, etc.
En si tenemos las dudas q se la preguntaremos a usted Ing.! Sobre el tema de los aleatorios
en la pizarra del juego de tres en raya.