diegoavila

Miembro Darkreloaded
  • Contenido

    15
  • Registrado

  • Última Visita

Reputación en la Comunidad

0 Neutral

Sobre diegoavila

  • Rango
    Mini Dark
  • Cumpleaños
  1. Me han propuesto en la universidad programar el algoritmo minimax para un juego de estrategia, tiene alguien un pseudocódigo que sea mejor que el de wikipedia para implementarlo con árboles? Nos proporcionan esta imagen, como veis se trata de un tres en raya, aunque lo que hay que hacer es un conecta4, ¿tengo que generar un árbol con un determinado número de nodos de primeras? Nos han pedido hasta un nivel 4 La idea consiste en comenzar en el estado actual del juego, y generar un árbol con todas las posibles jugadas mías y de mi oponente, hasta un nivel de profundidad determinado. La siguiente figura muestra un ejemplo de árbol minimax con el juego de las Tres-En-Raya. El primer nivel es mi primera jugada, el segundo nivel es la respuesta de mi adversario, el tercer nivel es mi respuesta a su respuesta... y así sucesivamente, hasta llegar a un nodo terminal (fin de partida). Estos son los pasos que nos ofrecen: 1) Generación del árbol de juego. Se generarán todos los nodos hasta llegar a un estado terminal o hasta llegar a una profundidad dada. En general, como los juegos son complejos, la memoria limita esta profundidad. 2) Cálculo de los valores de la función de utilidad para cada nodo terminal, según definición en cada juego. 3) Cálculo del valor de los nodos superiores a partir del valor de los inferiores. Alternativamente se elegirán los valores mínimos y máximos representando los movimientos del oponente (MIN) y del jugador (MAX). 4) Elección de la jugada, cogiendo el máximo de los valores que han llegado al nivel superior. ¿alguna idea? Gracias. TENGO RESUELTO EL TEMA, SI ALGUIEN TIENE INTERÉS QUE ME LO PIDA.
  2. BUFFFFFFFFFF esto huele a tarea de la uc3m de los inforsssss que echa para atrás!! jajaja fdo: teleco! jajaja
  3. cuanta gente de la uc3m veo por aqui madre..... jajajaja
  4. He terminado el proyecto, dejo aqui lo que consegui, primero explico un poco q es robocode: ¿Qué es ROBOCODE? ROBOCODE es un entorno de simulación de batallas con mini robots o minitanques que cada jugador deberá programar a su gusto para más tarde combatir contra otros jugadores. Creado por Alphaworks, que pertenece a la empresa de IBM, ha logrado que este entorno se ponga de moda y actualmente cuente con numerosos campeonatos, en los que participan desde los que comienzan a dar sus primeros pasos en la programación hasta grupos de investigación dentro de las universidades en busca de la mejor estrategia. ¿Cómo podemos jugar? Sólo tenemos que descargar y ejecutar el programa desde la web oficial de ROBOCODE, hppt://www.robocode.sourceforge.net, dónde además encontraremos su API y otras instrucciones. Una vez intalado solo tenemos que ponernos a programar, podemos hacer dos tipos de batallas, individuales o en equipo, nosotros aconsejamos comenzar primero con un solo robot e ir pensando pequeñas estrategias, ya tendremos tiempo de pensar esgrategias para nuestro equipo. Finalmente simularemos la batalla, y podremos verla en la interfaz de una forma un poco más jugable. AHORA PONGO EL CODIGO DE MI ROBOT: import robocode.*; import java.awt.Color; /*PecadoAnal: creado por diegoavila & company*/ public class PecadoAnal extends TeamRobot{//Al heredar de TeamRobot, hereda //a su vez de AdvancedRobot double Apunte; public double Apunte(double bearing){ double ApuntaTanque=getHeading()+bearing; //la suma de la orientacion de la bala que nos disparo de dos maneras, // asi orientaremos nuestro tanque con mas exactitud double Apuntar=ApuntaTanque-getGunHeading(); //apuntamos nuestro cañon calculando la diferencia en grados entre el cuerpo de //tanque y el cañon y con esa diferencia lo conseguimos redireccionar return Apuntar; } public void run() { //da color a cañon, scanner, disparo, radar y cuerpo del robot. setBodyColor(Color.black); setGunColor(Color.white); setRadarColor(Color.black); setScanColor(Color.blue); setBulletColor(Color.red); //el bucle while hace que lo que se incluye dentro de el se repita; //es decir se ejecute durante toda la vida del robot while(true){ turnRadarRight(360);//gira Radar en 360ª para detectar enemigo } } public void onScannedRobot(ScannedRobotEvent e){ if(isTeammate(e.getName())==false){ //si la energia del contrario es mayor que la de PecadoAnal y ademas // su energia es menor que 75 if (getGunHeat() == 0){ if (e.getEnergy() > 15 && e.getDistance() < 40) {//Dependiendo de la energia y la distancia //de nuestro robot, sera la potencia de tiro fire(3); } else if (e.getEnergy() > 10 && e.getDistance() < 60 ) { fire(2); } else if (e.getEnergy() > 4) { fire(1); } else if (e.getEnergy() > 2) { fire(0.5);//Este disparo al ser de tan baja potencia practicamente no se ven en la simulacion. } else if (e.getEnergy() > 0.5) { fire(0.1);//Este disparo al ser de tan baja potencia practicamente no se ven en la simulacion. }} if((getEnergy()<70)&&(e.getEnergy()>getEnergy())) {s etAhead(e.getDistance()-120);//nuestro robot se separara 120 pixeles si la energia del enemigo es mayor. setTurnRight(e.getBearing());//con getBearing localizamos al otro robot double bearing=e.getBearing();//Calculamos getBearing en este momento Apunte=Apunte(bearing);//LLamamos al metodo apunte if (Apunte== 0)//Si la diferencia angular es cero(esta enfrente del robot enemigo) scan();//entonces escanea } else{//Sino esta en frente entonces recolocamos nuestro robot en busca del enemigo setTurnRight(e.getBearing());//Torcera hacia la derecha y con el getBearing //calculara el angulo hasta el que debe girar setAhead(e.getDistance());// Avanzara hasta el robot enemigo calculando primero con el // getDistance la distancia a la que se encuentra double bearing=e.getBearing();//Calculamos getBearing en este momento Apunte=Apunte(bearing);//LLamamos al metodo apunte turnGunRight(Apunte);//Gira el cañon los grados que calcula con el metodo Apuntar }} //luchamos contra uno if(getOthers()==1){ setBodyColor(Color.yellow); setGunColor(Color.black); setRadarColor(Color.white); setScanColor(Color.orange); setBulletColor(Color.orange); } if(getOthers()==0){ turnRight(36000); }} }
  5. opino lo mismo
  6. Puedes comenzar con C++ o java, primero busca la titulación que quieres sacarte, mira las asignaturas, y programa en la que se te pida, por ejemplo todos los infors comienzan con C++ y luego Java, pero a lo largo de esta carrera se termina programando en cualquier lenguaje jeje, si piensas hacer industriales o algo asi, con que sepas un C++ basico vas sobradito, y si lo que quieres hacer es teleco, programa en java, en este lenguaje se programa al menos en mi carrera, que ya está en bolonia, Grado en ingenieria de Sistemas Audiovisuales, en esta carrera tienes bastantes asignaturas para programar, redes..., eso si yo de momento solo he dado Java, si te gusta solo programar mas que nada, yo escogeria informatica. Tienes bastantes editores para programar que te prestarán bastante ayuda, sobre todo a la hora de empezar, luego cuando sepas con un simple NotePad vas sobradito jejeje, pero para empezar yo escogeria Eclipse NetBeans... que ademas puedes hacer simulación de las compilaciones, sin necesidad de la CMD (la consola, la tipica pantallita negra jeje). Para empezar a programar elige problemas sencillitos, por ejemplo un programa que pida al usuario un numero y le diga si es par o impar, luego intenta una pequeña calculadora, haz los tipicos casting de un tipo primitivo a otro, etc. Una vez que hayas unos cuantos de este estilo, comienza con arrays y String, si lo comprendes lo tienes todo hecho. Con esto prueba ejercicios de tipo colocar y descolocar palabras en una frase o con numeros, prueba a hacer una pequeña agenda, cosas sencillas. Cuando tengas todos estos conceptos básicos y algunos más que no he escrito, puedes empezar con la interfaz gráfica, hasta entonces este tema no le toques, realmente es un poco "castaña", se trata de buscar en el API de java, no es mas que eso, mucho menos complicado que lo anterior. Mucha suerte, y si quieres tengo un tema colgado en este foro con ejercicio sencillos, lo que tuver en el primer cuatrimestre, lo de este es Java Swing (interfaz) y lo anterior.
  7. ME GUSTARÍA SABER METODOS PARA PROGRAMACIÓN DE ROBOCODE INTERESANTES, EN CUANTO A BLINDAJES DURACION DE LA VIDA, RELACIÓN ENTRE DISPARO-VIDA-FUERZA DE TIRO... GRACIASSS!!!
  8. yo lo vi, enfin no vi con mucha logica q la tia se sintiese mal y siguiese dandole, una completa imbecil
  9. ME GUSTARÍA PODER ENCONTRAR EJERCICIOS RESUELTOS DE CONVOLUCIÓN
  10. EXCELENTE, GRACIAS
  11. SEPARA LAS PALABRAS DE UNA FRASE UTILIZANDO SPLIT import java.io.*; public class OrdenarPalabras { public static void main(String args[]) throws IOException{ new OrdenarPalabras().Separa(); } public void Separa()throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String frase = br.readLine(); String [] x = null; x= frase.split(" "); Muestra(x); } public void Muestra(String []s) { for (int i = 0 ; i < s.length ; i++) { System.out.println(s[i]); } } }
  12. Jajajaja!!! Pues hombre yo solo te muestro como se em pieza en java actualmente dentro de la ingenieria de telecomunicacion, en esto se basa la asignatura de un cuatrimestre entero, para el segundo cuatrimestre tendremos java mas orientada a objetos... Ya te lo contaré!
  13. Aqui dejo algunos ejemplos para comenzar en java tipicos de clase de programacion. /* * El programa AmbitoVariables muestra como la variable y * no esta definida fuera del bloque if */ public class AmbitoVariables{ public static void main(String args[]){ int x; x = 10; if (x== 10){ int y; y = 20; System.out.println("x = " + x ); x *=3; System.out.println("y = " + y ); } //La siguiente sentencia produciria un error //dado que y no esta definida fuera del bloque if //System.out.println("y = " + y ); System.out.println("x = " + x ); } } /* * El programa Cadena muestra como obtener la longitud de una cadena de * caracteres e investigar la posicion de un determinado caracter */ public class Cadena{ public static void main(String args[]){ String nombre; nombre = "Francisco"; System.out.print("El nombre " + nombre + " tiene " +nombre.length() + " caracteres \n"); System.out.print("El nombre " + nombre + " tiene la letra 'a' en la posición " + nombre.indexOf("a") + "\n"); System.out.println("Empieza por: "+ nombre.substring(0,4)); System.out.println("Termina por: "+ nombre.substring(4)); } } /* * El programa AsignaReales muestra como se utilizan * las variables numericas en coma flotante * */ public class AsignaReales{ public static void main (String args[]){ float interés; double capital; interes = 6.25F; capital = 3.72E+9D; System.out.println("Interés = " + interés); System.out.println("Capital = " + capital); } } /* * El programa AsignaOtras.java muestra como asignar valores * a variables de tipo boolean y char. * */ public class AsignaOtras { public static void main( String arg[] ) { boolean esCierto; char letra; esCierto = false; letra = 'a'; System.out.println("Es cierto = "+ esCierto); System.out.println("Letra = "+ letra); letra = '\r'; System.out.println("Este texto\nse ve en\ntres líneas"); } } /* El programa muestra la anidación triple de la estructura for*/ class TripletasPitagoras{ public static void main (String args[]){ int i,j,k; for( i = 1; i <=25; i++ ) for( j = 1; j <=25; j++ ) for( k = 1; k <=25; k++ ) if(i*i== j*j+k*k && j < k) System.out.println(i+" "+j+" "+k); } } class Talla{ public static void main(String arg[]){ int talla; int tallaMenor; int tallaMayor; int almacén; tallaMenor= 36; tallaMayor= 54; talla = 37; almacén = 2; if(talla >= tallaMenor && talla <= tallaMayor && almacén == 1){ System.out.println("La talla existe"); System.out.println("Está en el almacén 1"); }else if(talla >= tallaMenor && talla <= tallaMayor && almacén == 2){ System.out.println("La talla existe"); System.out.println("Está en el almacén 2"); }else{ System.out.println("La talla no existe"); } } } class NumerosPrimos{ public static void main (String args[]){ boolean esPrimo=true; System.out.println("Numeros primos menores de 25"); for(int numero=1; numero < 25; numero++){ esPrimo=true; for(int numero2=2; numero2<=numero/2; numero2++){ if(numero % numero2==0){ esPrimo=false; } } if(esPrimo) System.out.print(numero+ " "); } System.out.println(""); } } class NumerosPares{ public static void main (String args[]){ System.out.println("Numeros pares menores de 10"); for(int numero=1; numero < 10; numero++){ if(numero % 2==0){ System.out.println(numero); } } } } class NumerosDivisibles{ public static void main (String args[]){ int suma=0; System.out.print("Números divisibles por"); System.out.println(" 3 y 7, entre 100 y 150"); for(int numero=100; numero < 150; numero++){ if(numero % 3==0 && numero % 7==0 ){ System.out.print(numero+ " "); suma+=numero; } } System.out.println("\nLa suma es: "+suma); } } public class Factorial{ public static void main(String arg[]){ int aux; int numero=//numero que quieras; int factorial = 1; //factorial aux=numero; do{ factorial *= aux; aux--; } while(aux > 0); if(numero > 0){ System.out.print("El factorial de: "+numero); System.out.print(" es: "+factorial); } } } public class díasMes{ public static void main(String args[]){ int mes; mes = 2; switch (mes) { case 1: System.out.println("Enero tiene 31 días"); break; case 2: System.out.println("Febrero tiene 28 días"); System.out.println("excepto bisiestos 29 días"); break; case 3: System.out.println("Marzo tiene 31 días"); break; case 4: System.out.println("Abril tiene 30 días"); break; case 5: System.out.println("Mayo tiene 31 días"); break; case 6: System.out.println("Junio tiene 30 días"); break; default: } } } class AnyoBisiesto{ public static void main (String args[]){ int anyo = 2003; boolean bisiesto; bisiesto=(anyo%4==0)&&(anyo%100!=0)||(anyo%400==0); if(bisiesto){ System.out.println(año + " es bisiesto"); }else{ System.out.println(año + " no es bisiesto"); } } } ________________________________________________________________________________ _______________________________ PRESENTARE MAS CODIGOS PROXIMAMENTE, CREO QUE TODOS COMPILAN PERFECTAMENTE ________________________________________________________________________________ _______________________________
  14. alguien sabe cuando podrá estar disponible¿? muchas gracias.