SDL mínim. Diferents tècniques

De wikijoan
La revisió el 16:52, 20 des 2017 per Joan (discussió | contribucions) (→‎Descàrrga projecte)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a la navegació Salta a la cerca

Introducció. Projecte recreativa_dards

Estic programant amb C++ i SDL el software per fer funcionar una recreativa de dards (projecte recreativa_dards). Ho vull fer de forma ordenada i formal. Els passos serien:

1. Estudiar bé les classes a implementar.

2. Programar només amb la consola tota la lògica dels diferents jocs a implementar. Pensar ja en la interfície d'usuari, però només treballar en la consola.

3. Migrar tot el codi a SDL, però conservant sempre la compatibilitat amb la consola. Compilar amb l'opció -DSDL per tal de què la meva aplicació sigui SDL.

4. Implementar tota la part de OpenCV (detecció dels dards), i barrejar-ho amb el codi. S'haurà de barrejar tant en la part de consola com en la part SDL.

Com que m'he fet una mica de lio en la part de SDL, he fet un petit exemple per aclarir dubtes. El tema està en què tinc tot el codi de consola ben fet i ordenat. Es tracta de què quan posi tota la capa gràfica (llibreria SDL), em quedi tot el codi ben dissenyat i ordenat.

No faig cap classe específica de SDL, sinó que la part de SDL la integro en les diferents classes que tenen part o elements gràfics.

Per tant, he fet un petit projecte de SDL mínim, per aclarir conceptes (arrel de què he perdut bastant de temps amb un error de codi). Consta de tres carpetes-versions:

  • versió v1 (sense classes): exemple mínim de SDL en un sol fitxer
  • versió v2 (POO): 1 arxiu per cada classe. Creo superfícies en una classe, i les vull importar a una altra. Tinc la classe Screen, i la classe ScreenElement. Vull crear correctament la superfície des de App (a través de Screen). Les superfícies estan a ScreenElement. Funciona correctament. Els problemes que havia tingut era que en el constructor App::App he de cridar a inicialitzarSDL() abans de cridar a createScreenElements(). Els elements de pantalla (ScreenElement) tenen associat un superfície i un rectangle. Quan vull construir (des de App) la pantalla (Screen) pintant els elements (ScreenElement), funciona bé.
  • versió v3 (POO): totes les classes en un sol arxiu.

Enllaços


creat per Joan Quintana Compte, desembre 2017