Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - abreu20011

#1
Saludos :)

Escribo este post un poco con la esperanza de poder aclarar y aclararme cual debería ser el camino a seguir, según qué situaciones, para desarrollar videojuegos, centrándonos en el tema de programar, más que de hacer diseño de niveles.

Yo ya tengo algunos conocimientos básicos, por lo que mi duda va más orientada hacia el futuro, que hacia la actualidad.

Personalmente, uso Unity, como muchos cientos, debido a su facilidad y a que permite hacer real, sin demasiados conocimientos, muchas de las cosas que queramos. No quiero entrar en el debate de si es bueno o no, bajo mi punto de vista, aunque Unity en la actualidad me permite calmar las ganas de crear juegos, me gustaría entender mejor como funciona lo que hay por detrás.

He estudiado algo de XNA, y con ello aprendí (un poco) el tema de la matrices, las proyecciones, y ya sólo de ojeada, el lenguaje que usa para los shaders.

Mi problema, e imagino que el de cualquiera que empiece en esto, es qué camino debería seguir uno llegados a este punto, en el que más o menos te defiendes, sabes, más o menos lo que es programar, y ya has hecho algunos trabajos reales en .NET y por placer en Android SDK y Unity.

Existen muchas API diferentes en este bonito mundo, y supongo que aquí se empieza a notar mi desconocimiento, porque no sé ni si se llaman API, engine o cómo exactamente.

Me refiero a: XNA, DirectX y OpenGL. (ya sé que XNA no está al mismo nivel, pero tampoco se aleja mucho por lo que leí en su momento)
Aunque he visto otros frameworks tipo Dark GDK (http://www.thegamecreators.com/?m=view_product&id=2128), creo, que son variaciones de estos primarios. Y supongo que XNA es una variación de DirectX. ¡Cuantas suposiciones! xD

Mi problema es que quiero verlos todos, y no abarco ninguno. Miro un poco de XNA, y luego paso a OpenGL (más bien OpenGL ES) y asi continuamente.

Por ejemplo, ¿para programar un visor de objetos 3D y poder crearlos, tipo 3DMax, que usaría? Imaginad la pregunta en su modo más simple, obviamente, no me refiero a programar 3dsmax.

Vale, me diréis que OpenGL es compatible con todos los SO, DirectX es privativo, y que XNA está muerto.

Pero para entender mejor todo el tema de la programación 3D, y al mismo tiempo, estudiar algo que me complemente en el futuro, ¿qué sería la mejor opción?

Personalmente, mi pequeño sueño desde niño ha sido programar Doom 1 como lo hizo John Carmack, sin Unity, UDK, ni nada. Un poco de C, pizza y muchas ganas.

Pero si de los sueños podemos sacar algo util, mejor, por eso mi duda va un poco orientada a qué estudiar, pero que me ayude a seguir mejorando en el futuro.

Ya sabéis como funciona esto, estudias una cosa, y poco después ves que otra cosa que usabas, se basa en esa misma. No digo que quiera llegar a ASSEMBLY, tampoco quiero exagerar, pero al menos no sentir que no tengo ni idea cómo funciona internamente un Raycast en Unity.

Otra duda que siempre he tenido, y tarde o temprano, yo creo que cualquiera que se meta en este mundo se plantea es... ¿cómo se diseña un nivel?

Me refiero: Si usas XNA, hagas lo que hagas, lo haces escribiendo, no hay un visor como en Unity o en UDK. Puedo entender que programes los objetos para que actúen de de una u otra manera según que situaciones, pero por ejemplo, un mapa del Doom, que tiene una forma establecida, unos enemigos en unas posiciones establecidas y unas texturas establecidas, ¿cómo cargas todo ese 3D a nivel de código? Teniendo en cuenta que hay colisiones, distintos materiales, animaciones en las puertas, texturas... Por  no hablar de un Mario Bros, con los trozos de tierra (donde los pies hacen contacto con el suelo, vamos :P) en X sitios a lo largo de un más que extenso ancho que ocuparía mucho más que un folio A4 dibujado a mano.

Estas ultimas preguntas son demasiado especificas, pero mi verdadera pregunta es: ¿Qué tengo que estudiar para responderme todas esas dudas?

Creo que si hubiera continuado estudiando XNA habría podido responder esa ultima pregunta, pero me daba tanta cosas que haya donde fuera me dijeran que XNA estaba muerto, y que usara DirectX o OpenGl... Jajaja, pero claro, ¿cual? :)

Muchas gracias por leerme!
Un saludo :)
#2
Saludos,

La verdad es que ya no sé si me esta tomando el pelo o qué pasa aquí. Estoy programando bajo la API de Autodesk Maya sobre Python algo muy, muy básico: cambiar el valor de una variable mediante una función.

Pero mi asombro y mi desesperación es que, si cambio el valor de la variable desde dentro de la función (en teoría, es una variable creada FUERA de la función, por lo que debería ser global) y sin salir de la función, le digo que me haga un print del valor... funciona.

Pero en cuanto llamo a la misma variable (se supone, ya modificada) desde otra función, no hace nada. Simplemente, deja el valor con el que fue creada la variable :(

Es como si creara una segunda variable en mi función o no guardara nada o no sé qué u.u

¿Alguna sugerencia?


import maya.cmds as mc

variable = '_MAL_'
collection1 = mc.radioCollection()

ventana = mc.window(t = 'a')
mc.columnLayout(adj = True)

mc.radioButton(l = 'A', cl = collection1, onc = 'F1()')
mc.radioButton(l = 'B', cl = collection1, onc = 'F2()')
mc.button(l = 'ver', c = 'Ver()')

mc.showWindow(ventana)

def F1():
   variable = 'A'
   print 'variable modificada a A'
   print 'valor leido desde F1(): ' + variable

def F2():
   variable = 'B'
   print 'variable modificada a B'
   print 'valor leido desde F2(): ' + variable
   
def Ver():
   print variable


Un saludo y gracias!
#3
Redes / Router SMC7004VBR fantasma?
16 Septiembre 2012, 15:35 PM
Saludos comunidad :)

Vengo aquí en busca de ayuda porque ya no sé qué hacer. Ni siquiera sé que es lo que esta pasando, ojala alguien pueda darme algún consejo o sepa que esta ocurriendo.

El tema es un poco extraño, así que lo explico:

Tengo contratado una linea ADSL con Orange -aunque hasta hace dos días, tenia una de Jazztel en la que duré cerca de tres años- en la que un técnico nos añadió una nueva linea (yo, personalmente, le vi introducir un cable en la central de mi comunidad y llevarlo hasta un nuevo PTR en mi casa) con la que llevo desde hace dos días.

El problema viene en que, tanto antes, como ahora, el rango correcto de IP en mi hogar es de 192.168.1.XXX. El nuevo router, funciona por DHCP, por lo que, cuando funciona, la IP que me da es una valida e Internet funciona correctamente.

Pero a veces, porque sí, me da un IP distinta: 192.168.2.XXX y claro, ahí ya no tengo Internet. Investigué un poco, y metiendome en la puerta de enlace: 192.168.2.1 puedo entrar en un rotuer (SMC7004VBR) que en mi casa no existe.

Sé que es ese router porque metiéndome en 192.168.2.1 dentro de un navegador llego hasta él.

No tengo ese router por ningún sitio, no existe. Sin embargo, a veces recibo esa IP. Hace años es cierto que ese router estuvo en mi casa, pero hace años. Hoy por hoy, ni siquiera esta a 10km a la redonda de donde yo vivo. Sinceramente, creo que incluso se tiró a la basura. La conexión funciona así:

El router de Orange (el bueno) tiene un cable directo hasta un HUB nque a su vez, saca otro cable que llega a mi sobremesa. No hay más intermedios, y sin embargo, a veces recibo esa otra IP (este HUB a parte, va otro sobremesa, sin embargo, la IP mala la da este o no encendido este otro ordenador, por lo que no creo que sea por ahí)

¿Alguien sabe que puede estar pasando? ¿Qué es este router? ¿Es posible que sea de algún vecino? Es que no tiene sentido, porque va por cable!! D:

Otros datos que quizás sean importantes:

Dentro del router fantasma, dentro de Status, tengo esta información que no he sido capaz de encontrar donde cambiarla:

Barricade Settings
IP Address: 192.168.2.1
Subnet Mask: 225.225.225.0
DHCP Server: Enabled
Firewall: Deisabled
UPnP: Disabled

La información que sale en Connection Status si que la he podido cambiar, y le he dado la información de mi ISP pero nada... Si no puedo destruirlo, al menos que de la información correcta >.<

La verdad que ya no sé que hacer.

Un saludo a todos :)
#4
Saludos :)

Vengo con una duda a ver si alguien puede ayudarme un poco  ^^ Es un tema de concepto, que no sé si estoy haciendo bien algo.

Hablo de la función memset y como la he aplicado. Se supone que esta función sirve para inicializar una matriz a 0, indicandole el tamaño en bytes que queremos que ocupe.

Pero, ¿y cuando esa matriz es una matriz de estructura?
Mi código funciona, pero no tengo muy claro sí está bien programado:


typedef struct
{
char Nombre[20];
char Direccion[30];
int Telefono;
int Nota;
nDias Dias;
}fichaPersona;

fichaPersona Alumnos[20];

memset(Alumnos, 0, sizeof(int) * 20);


al parametro de sizeof le he dicho que es un entero. Pero la matriz Alumnos que tiene 20 posiciones, esta compuesta por 5 enteros y dos char.

¿Es correcto entonces poner sizeof(int) o tendria que poner otra cosa? A mi entender un solo entero tiene que ocupar menos bytes que 6 variables unidas :S

Muchas gracias! :)
Un saludo
#5
Saludos :)

Sólo queria preguntar una duda que tengo. Cuando compilo un programa en C e incluyo el #define <stdio.h> pero no el conio.h puedo usar las funciones getch() y getche.

Sin embargo, si busco en la librería de stdio.h no salen, sin embargo si para la librería conio.h.

¿Es posible que funcione por compilar desde Windows aunque no incluya las librerías? Es que no se muy bien por que pasa eso :)

Del mismo modo, puedo usar system() sin incluir stdlib.h :S

Gracias
#6
Saludos a todos :)

Os vengo con una duda un tanto complicada >.<

¿Hay alguna forma de poder controlar un IndexOutofRangeException de un Array?

El problema está en que tengo un función que llama a otra, donde esta ultima usa un Array con un Split siendo el indice de esta llamada por la primera.

La función que usa el Split:

Public Function ReadCommand(ByVal frase As String, ByVal nWord As Integer) As String
       Dim ArrayCommand() As String = Split(frase)
       Return ArrayCommand(nWord).ToString
   End Function

//Module: stx_mll


Y la función que llama esta primera:

   Public Sub cmd_clear()
       Try
           Select Case stx_mll.ReadCommand(txtRead, 1)
               Case "-all"
                   ClearScreenDelftonesScript()
               Case Else
                   cmd_error()
           End Select
       Catch
           ClearScreenDelftonesScript()
           StartDelftonesScript()
       End Try
   End Sub


Esta ultima función, como podéis ver, ya la controlo con un Try, pero me preguntaba si no habría alguna forma un poco más elegante que esta :)

Muchas gracias a todos,
un saludo
#7
Saludos :)

Llevo un tiempo con este código que no logro que funcione "del todo"
Estoy buscando una forma en la que al escribir una frase, se separan las palabras una por una, aunque mi código ahora mismo sólo funciona con la primera palabra o la ultima de una frase u.u

Este es el código para sacar la primera palabra, que aunque no funciona como yo quisiera, funciona:

Public Function FirstWord(Byval frase As String) As String
Dim word As String = ""

For i As Integer = 1 To Len(frase)
'Analizamos desde la posición 1 hasta el maximo de la frase por un For buscando el espacio en blanco
'para saber que se comienza a escribir una segunda palabra, y por tanto, sabemos cual es la primera
If Mid(frase,i,1) = " " Then
word = Mid(frase, 1, (i - 1))
Return word
Exit for
End If
Next
If word = "" Then
'Si la variable "word" no tiene nada guardado (esto se debe a que solo hay una palabra en la frase)
'procedemos a guardar en word la frase entera
Return frase
End If
End Function


Y la función para la ultima palabra (que deberia ser la segunda, no la ultima u.u)
Básicamente hago lo mismo que en la primera para sacar la primera palabra, y a a partir de ahí, la "quito" para que lo vuelva analizar ya sin esa primera palabra:

Public Function SecondWord(ByVal frase As String) As String
Dim word As String = ""
Dim startSecondWord As Integer = 0

For i As Integer = 1 To Len(frase)
If Mid(frase, i, 1) = " " Then
startSecondWord = i + 1 'añadimos el +1 para que se salte el espacio y comienze por la 2º palabra directamente
frase = Mid(frase,startSecondWord) 'Guardamos la frase ya con la primera palabra quitada
End If
Next

For x As Integer = 1 To Len(frase)
If Mid(frase, x, 1) = " " Then
word = Mid(frase,1, (x - 1))
Return word
Exit For
End If
Next
If word = "" Then
'Si la variable wrod esta vacia, igual que en FirstWord devolvemos la frase entera, que ya ha sido cortada la primera
'palabra el primer For de esta función
return frase
End If
End Function


No se si es posible saber si un cadena llega a su fin, así no necesitaría buscar ese espacio, que es el mismo que me cusa el problema de que si solo hay una palabra en toda la frase, necesite del ultimo If Then para sacarla >.<

Si alguien me pudiera dar algún consejo se lo agradecería :)

Un saludo
#8
Saludos :)

No logro entender que pasa. A ver si alguien me puede ayudar :)
En un principio pensé que quizás era temas de privilegios, pero aunque lo quitaba de C:\ para ponerlo en un disco normal sigue fallando:

Código (vbnet) [Seleccionar]
   Sub Main()
       MsgBox(My.Computer.FileSystem.FileExists("C:\Users\abreu20011\Desktop\a.jpg"))
       Shell("C:\Users\abreu20011\Desktop\a.jpg")
   End Sub


El MsgBox me da TRUE, asi que no entiendo por qué cuando llega al Shell me salta un FileNotFoundException :(

¿Hay algún otro método para abrir otro tipo de ficheros que no sean ejecutables (como la foto o un vídeo)? Quizás lo que está mal es usar Shell :S

Gracias ^^
#9
.NET (C#, VB.NET, ASP) / Handles (VB.NET)
26 Agosto 2011, 00:58 AM
Saludos :)

Estoy trabajando con el IDE SharpDevelop (con framework 3.5) y no sé si hay algo que hago mal (seguramente) o es que este IDE no vale para nada :S

Cuando declaramos un evento en Visual Studio, tenemos el "Handles" para poder decidir si el evento es por click, dobleclick, etc... Simplemente pongo:

Sub Label1Click(sender As Object, e As EventArgs) Handles Label1.Click
Msgbox("Hola")
End Sub


Y al pulsar sobre el botón, saltará el MsgBox. Pero si hago exactamente lo mismo en SharpDevelop me dice que "Handles" requiere de una clausula "WithEvents" :S

¿Alguien me podría ayudar? Necesito usar ese handles porque quiero que esto funcione por doble click y no por uno :S

Gracias :)
#10
Saludos :)

Estoy haciendo un programa (bueno, más bien, mejorando el codigo de un programa mio) teniendo más en cuenta la POO pero, aunque funciona, no lo hace correctamente. A ver si alguien sabría decirme porqué >.<

Tengo una clase con varias variables privadas, que se generan por un metodo que no devuelve valor (sub) que le asigna a cada variable un valor. Esto esta hecho así, porque no entiendo porqué no me deja asignar los valores directamente en la clase, por ejemplo:

Código (vbnet) [Seleccionar]
Dim variableArray() As String
variableArray(0) ="Ejemplo 1"
variableArray(1) ="Ejemplo 2"


Me dice "declaration Expected" si lo hago asi, por lo que lo meti en el Sub y no dió más problemas... aunque no entiendo porqué, en cambio, si lo hago asi:

Código (vbnet) [Seleccionar]
Dim variableArray() As String = {"Ejemplo 1","Ejemplo 2"}

Sí funciona :( (pero es que queda muy poco claro, y son muchisimas variable y muchisimos datos para hacerlo "todo en una linea" la idea era que fuera más claro =(

Pero como funcionaba, más o menos me di por satisfecho, hasta que llego la parte en la que el programa llama a este metodo.

En un principio cree la clase en el Main, por ejemplo:

Código (vbnet) [Seleccionar]
Dim clase As Clase_class = New Clase_class
clase.GenerateTask '<- Asi es como he llamado al metodo para que asigne los valores


Pero, aunque no da error, no hace nada... es como si no llamara a ese metodo.
Este es el codigo del botón:


Código (vbnet) [Seleccionar]
Dim ListaTareas As ListaTareas_class = New ListaTareas_class
Sub General_programas_btnClick(ByVal sender As Object, ByVal e As EventArgs)
   ListaTareas.GenerateTask

   Me.general_tarea_info_lbl.Text= ListaTareas.ShowTaskName(0, 0)
   Me.general_info_info_lbl.Text = ListaTareas.ShowTaskInfo(0, 0)
End Sub



Como esta expuesto así sí funciona, pero claro, tengo muchos más botones, y no creo que sea una solución correcta (aunque funcionar, funciona) añadirle el GenerateTask en cada botón.
¡Es como decirle al programa que haga una y otra vez lo mismo no siendo necesario!

Estoy seguro que es un problema de lógica, que algo debo estar olvidando, pero por más que miro y miro el código, no sé me ocurre otra manera de hacerlo funcionar :(

Muchas gracias,
y un saludo ^^
#11
Buenas  ;)

Estoy haciendo un trabajillo bajo modo consola de una calculadora y por ahora todo está bien, pero se me ocurrió que sería "más chulo" si el programa analizase en una variable (conmocionada por console.readline) el texto ingresado... me explico:

Si el usuario escribre "2+2" pues que sea capaz de saber que el primer caracter es un operando, el segundo un simbolo (ingnorarlo) y el tercero el segundo operando)

Cree una función que recibiera dos valores integer (n1 y n2) y devolveira otro integer:

Citar
Return N1+N2 'En caso de suma

Pero luego cai en que no se como enviarle una parte del texto escrito a la función :o

Por ahora sólo funciona dandole los valores por separados, guardados en dos variables (a y b) y luego sumados... Se me ocurrio hacer lo del salto de espacios con {0,1} pero no se lo puedo añadir a un console.readline asi que no se me ocurre  :-[

Bueno, si a alguien se le ocurre mil gracias  ;D
Saludos
#12
Buenas a todos  ;)

Tengo una duda que no sé si es posible...

Tengo 3 variables que son: semana (Integer) curso (Integer) y total (String)

En el siguiente código:

   
Citartotal = "BBD.x" & semana & curso & ".text"

Significa que quiero que total me de, por ejemplo: BBD.x11.text, ¿para que quiero esto?
Tengo un form llamado BBD, en el cual tengo textbox llamados x11, x21, x31, etc... mi intención es que esa linea llame al form y al valor "text" del objeto calculo por las dos variables "semana" y "curso".... Ir va, pero el problema es que me lo da como un dato de texto (obiamente es String), mi duda es que quisiera que en vez de devolverme sólo texto me convierta la variable "total" como si realmente se escribiera ese código en VB...

En otras palabras, en vez de escribir:

Citarasignatura.Text = ("El " & cbx_curso.Text & " curso tiene " & horario(semana, curso))

quisiera que fuera:

Citarasignatura.Text = ("El " & cbx_curso.Text & " curso tiene " & total)

No sé si me expliqué.

Gracias de antemano  ;)
#13
Hola a todos, perdón por el titulo, pero francamente no consigo pensar otro titulo mejor, del mismo modo si este post ya ha sido preguntado, lo lamento, como digo, no sé como buscar esta duda  ;)

Mi duda es:
Tengo un programa que genera un número aleatorio entre 0 y 100, bien, con la función IF quiero que el VB (por cierto, VB 2005 .NET) pregunte:

"Y si el número es entre 0 y 14" pues que pase algo

del mismo modo, en la misma acción (en este caso un boton)

"Y si el número es entre 29 y 15"

Pero claro, NO quiero que pase lo mismo si es estre 29 y 15, como si es entre 0 y 14...

No sé si he logrado explicarme, no me entiendo ni yo, si es asi, mil perdones  :huh:

Gracias de antemano, un saludo