Quizás iniciar un proyecto aleatorio?, Intentar crear algún juego? Buscar algún chalenge de programación por ahí?
Las 3
- Un proyecto aleatorio, sobre cualquier tema que se te ocurra, es una buena forma de practicar
- Challenges, pues como el primer punto. Solo que el primer punto, pues los proyectos "normales" no suelen tener verdadera complejidad. Aquí tendrás que pensar algoritmos más o menos complicados. (Ej. https://projecteuler.net/)
- Un juego es, en mi opinión, de los tipos de programa más completos y complejos (según el tipo de juego) que podrías hacer. Aquí utilizarás de todo: gráficos, sockets y protocolos cliente-servidor (si es multijugador), manejo de input del usuario (en tiempo real, según el juego), manejo de datos de forma genérica (al ser un programa más "tangible", es más fácil aplicar polimorfia. Por ejemplo, una clase base Enemigo de la que hereden diversos tipos de enemigos, que difieran IA, forma, o lo que sea). Esa es otra, si le metes IA, pues es un punto extra a algoritmia. Luego, un juego siempre suele ser más entretenido de hacer y más divertido de ampliar (una vez la base ya esté bien cimentada). Un contra de esto puede ser que una mala estructura del juego puede acabar en un código muy engorroso de ampliar, así que mejor empezar planificando todo bien.