Demineur 4k

Soyez le premier à donner votre avis sur cette source.

Vue 160 fois - Téléchargée 17 fois

Description

Nouvelle version du démineur pour très grands écrans (C# VS2017)

But : faire un démineur gérant un grand nombre de cases
J'avais même imaginé disposer des assenseurs pour aller encore plus loin.

Génèse : La surcharge d'un contrôle pour géger une case de jeu est trop lente. Le moteur est donc devenu purement logique, crée l'illusion d'un clic et reproduit un graphisme sur un seul controle.
La proportionnalité doit être gérée dans les positionnements, les tailles...
Une première version donnait un résultat super au niveau rendu avec des textes sur graphics rendus en PointF, des cases de taille SizeF et idem pour les polices. Le beau était là (2000 cases sans problème).
Mais l'utilisation de beaucoup d'objets pen, brush et graphics créait des fuites de mémoire et je n'aimais pas ça, le garbage collector ayant lui aussi du mal.
Dans un second temps, j'ai donc modifié le code pour libérer chaque objet lié au graphisme proprement, mais le code devenait laid, trop de graphics fait ramer et un conflit à priori entre le layout et le changement de taille de police a mené à une impasse (pour grilles de plus de 10k cases).
Je suis alors passé par des imagettes redimentionnées à la demande et stockées, souple, rendu rapide, pas de bug et 20 000 cases sans problème (avec 3500 mines).
Problème : avec des PointF, les bitmap passent par un traitement et c'est flou, du coup, obligé de repasser par un entier juste avant le rendu, dommage.

Finalement : le programme est très léger et gère vraiment beaucoup de cases de jeu, si vous avez un écran 4k, testez (d'où le nom de la source).

Aller plus loin ? une grille 40*80 (3200 cases, 599 mines) permet d'y passer 25 minutes, c'est bien pour du casual.

Dans le code :
_ recours à une structure pour sa légèreté.
_ gestion des dimensions en SizeF
_ récupération d'un clic de souris transformé en ligne et colonne du jeu
_ sauvegarde de la position de la fenêtre
_ gestion en internes de bitmaps redimentionnées quand nécessaire.
_ rendu graphique incrémentiel et global pour la légèreté.

Maj : activation du full screen et redessin de la grille mieux géré.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de pascal16m

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.