DÉMINEUR UTILISANT UNE TDRAWGRID ET AVEC LEQUEL ON PEUT TRICHER

Utilisateur anonyme - 8 déc. 2007 à 21:05
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 12 déc. 2007 à 18:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44977-demineur-utilisant-une-tdrawgrid-et-avec-lequel-on-peut-tricher

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
12 déc. 2007 à 18:17
J'ai bien pris note de vos suggestions.

To do pour la prochaine version :

- chargement des ressources son en mémoire pour éviter un accès répétitif au disque dur, comme me le suggère Cirec (ta dernière solution me convient tout à fait) ;
- ajout du clic simultané droit et gauche comme suggéré par Kenavo. Mais pour ça il faut que je refasse complètement le logigramme... y'a du boulot.

A plus.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
11 déc. 2007 à 16:58
@ Cirec
Tu avais peut-être utilisé "getHeapStatus.totalFree" au lieu de "getHeapStatus.TotalAllocated", non?

"getHeapStatus.totalFree" est en effet peu fiable à cause du système d'exploitation qui alloue de l'espace quand nécessaire...

Enfin, j'dis ça, j'dis rien. Car on peut te faire confiance en général, quand ton PC n'est pas envouté. ;)
Utilisateur anonyme
11 déc. 2007 à 14:04
Pourquoi faire simple quand on peut faire compliqué ?

Voici une méthode très simple propre et rapide ;-)

Le fichier ressource ressemble à ça :
Tic WAV "Tic.wav"
Tac WAV "Tac.wav"

{$R Sound.res}
Uses MMSystem;
var
PTic, PTac : Pointer;

procedure TForm2.FormCreate(Sender: TObject);
Var
HRes : THandle;
begin
{Charge la ressource en mémoire}
HRes := LoadResource(hInstance, FindResource(hInstance, 'Tic', 'WAV'));
{Renvoie un pointeur sur la ressource
Il n'est pas utile de faire appel UnLockResource
Les libérations se font automatiquement par Windows à la fin de l'application
http://msdn2.microsoft.com/en-us/library/ms648047.aspx}
PTic := LockResource(HRes);

HRes := LoadResource(hInstance, FindResource(hInstance, 'Tac', 'WAV'));
PTac := LockResource(HRes);
end;

Penses tu que ce soit assez rapide ;-)
En l'appliquant sur tous les sons l'application peut ainsi devenir autonome,
pas de fichiers annexe.

@Caribensila :
"Mais pourquoi n'utilisez-vous pas "getHeapStatus.TotalAllocated"
pour détecter les fuites de mémoire?"

Turbo Delphi le fait très bien juste en mettant un boolean à vrai
et qu'il me dit dans la majorité des cas quel objet en est responsable ;)

J'avais déjà fait des testes avec "getHeapStatus.TotalAllocated" sous D4
mais il ne détectait pas toujours toutes les fuites, mais je m'y suis peut être mal pris ?

L'autre possibilité est d'utiliser MemCheck " http://v.mahon.free.fr/pro/freeware/memcheck/ "
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
11 déc. 2007 à 00:11
Sniff?.. Sniff!..
Y'a comme une odeur d'éther quand on arrive au bout de ce couloir...
Nix a médicalisé le service?

Bon! Vous allez dire que j'ai encore un métro de retard... Mais pourquoi n'utilisez-vous pas "getHeapStatus.TotalAllocated" pour détecter les fuites de mémoire?
Ca marche pas bien?
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
10 déc. 2007 à 23:53
C'est curieux chez les marins ce besoin de faire des phrases...
N'aurais-tu pas fait ton service national dans la marine éponyme ? ;-)
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
10 déc. 2007 à 23:38
Te pête pas trop les neurones,j'voudrais pas qu'tu finisses au terminus des prétentieux !
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
10 déc. 2007 à 21:46
Salut, Kenavo*.

Bien compris pour le double clic, en théorie ça ne devrait pas être trop difficile à mettre en oeuvre (si j'ose dire).

Oui, si on tombe sur une mine, les cases contenant les autres mines doivent être dispersées façon puzzle, sinon c'est vrai que c'est frustrant. J'avais pas fait attention, mais il faut avouer que j'ai beaucoup triché pour le débogage, et du coup ça m'a échappé.

Je n'avais pas limité le nombre de mines pour que les curieux s'en donnent à coeur joie, dans la mesure où ça ne plante pas le jeu. Je voulais faire de même pour les dimensions de la grille, mais en-dessous d'une certaine taille c'est pas beau, et au-delà, ça risque de déborder de l'écran. C'est une sorte de démineur expérimental, quoi. Mais si je fait une version "normale", je tiendrai compte de tes remarques. Je note aussi que l'affichage des mines est un peu exigü.

"Attention, tout abus de ce jeu peut causer des névralgies cervicobrachiales !". Et pourquoi pas des hémorroïdes, tant qu'on y est ?

Ce démineur, il va finir par me causer quelques nuits blanches, et des "nervous breakdown" comme on dit de nos jours.

Merci pour tes remarques utiles et constructives, je les mettrai en pratique dans une future mise à jour, mais pas tout de suite. Je suis un peu fatigué et je me demande si je ne vais pas me retirer, je sais pas moi, à Montauban par exemple, pour y vendre... bof pourquoi pas des tracteurs ou des bâtonneuse moisseuses.

A +.

* je suis parfaitement bilingue.
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
10 déc. 2007 à 20:50
Ah si ! encore un truc pour faire un clone : quand ça pète, quand ça ventile, quand ça disperse, toutes les cases sont découvertes !
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
10 déc. 2007 à 20:45
Mon bon Japee,
Pour les constantes typées (premiers posts) c'est une option du compilateur sous D7 ("constantes typées affectables" à cocher ou {$J+})
Pour la taille max en mode personnalisé, j'ai poussé à 70 x 56 (écran 1280 x 1024) ... et ça tourne !
Pour le nombre de mines, en mode personalisé tu peux limiter à col x row - 1. J'ai mis -1 parcequ'il est quand même plus intéressanat de jouer à la roulette russe en ayant au moins un trou dans un barillet ayant 3920 balles (ça laisse une chance ! Sinon autant y aller au kinder-suicide)
Du coup l'affichage du nombre de mines est trop petit (que 3 caractères)....

Par contre là, sans le truc du click simultané droite-gauche, c'est galère !
(pour mémoire, ce click simultané sur une case découverte portant le nombre de mines adjacentes peut produire deux effets :
- si le nombre de "drapeaux" est inférieur au nombre de mines indiquées, les cases adjacentes non découvertes changent d'aspect (mise à plat sans effet 3D).
- si le le nombre de "drapeaux" est égal au nombre de mines indiquées, toutes les autres cases adjacentes sont cliquées.
(si le le nombre de "drapeaux" est supérieur au nombre de mines indiquées, rien ne se passe)
Et pour finir je te conseille d'apposer une mention du type :
"Attention, tout abus de ce jeu peut causer des névralgies cervicobrachiales !"
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
10 déc. 2007 à 17:23
Ah, j'aime mieux ça...
Tout s'éclaire d'un coup.
Et la fin du monde (des mondes ?), c'est peut-être pas pour tout de suite. ^^
C'est donc finalement dû au fait que Turbo Delphi et D7 (et antérieur) ne compilent pas de la même manière.
Quoi qu'il en soit, tu m'as ouvert des horizons, et je vais m'intéresser d'un peu plus près à cette utilisation des Streams.
Utilisateur anonyme
10 déc. 2007 à 17:18
je vous écrit du PC de mon fils pour affirmer
que l'application fonctionne également très bien sur cette machine !!!

C'est bien le compilateur !!!

et j'ajoute aussi ... que si j'enlève les deux fichiers vaw
ben ça fonctionne pas ... ce n'est donc pas dans l'application sous quelques formes que ce soit.

voilà ... désolé lol
Utilisateur anonyme
10 déc. 2007 à 16:58
J'aime bien la deuxième explication ... lol

Bon plus sérieusement, j'ai été jusqu'à redémarrer la machine pour être sûr du coup et ... (plus de trace dans la mémoire)

J'annonce que ça fonctionne éffectivement sous Turbo Delphi
et ne fonctionne pas sous Delphi7 ... Dommage

Il semblerait donc que le nouveau compilateur permet plus de flexibilité dans le code tout en assurant et la disponibilité des données et leurs libérations.

Que c'est beau le progrès ;-)

Mais c'est pas bien grave, pour D7 au lieu de ne déclarer qu'une variable
tu en déclares deux que tu libère à la fin et plus de fuites et le code reste compatible entre version.
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
10 déc. 2007 à 16:51
... et haut parleur branchés aussi, j'avais oublié de préciser dans les conditions du test...

Décidément, c'est pas que je sois têtu (enfin un peu quand même...), mais chez moi, il n'y a que ce code qui marche, et j'ai trouvé comment tout libérer/désallouer proprement :

uses MMSystem;

var
MemoryStream: TMemoryStream;
Data1, Data2: PByte;
PTic, PTac : Pointer;

procedure TForm1.Button1Click(Sender: TObject);
begin
PlaySound(PTic, 0, SND_SYNC Or SND_MEMORY);
PlaySound(PTac, 0, SND_SYNC Or SND_MEMORY);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MemoryStream := TMemoryStream.Create;
with MemoryStream do
begin
LoadFromFile('Tic.Wav');
GetMem(Data1, Size);
ReadBuffer(Data1^, Size);
PTic := Data1;
LoadFromFile('Tac.Wav');
GetMem(Data2, Size);
Seek(0, soFromBeginning);
ReadBuffer(Data2^, Size);
PTac := Data2;
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeMem(Data2);
FreeMem(Data1);
MemoryStream.Free;
end;

Si le code de Cirec fonctionne sur un autre PC que le sien (qui est certainement ensorcelé), pourrait-il nous le faire savoir ?
Ca fairai avancer le aaachimilimili...achimilimilimilblic.
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
10 déc. 2007 à 16:14
Cirec,

Oui, j'ai testé ton code dans des conditions rigoureuses :

- nouveau projet (donc aucun code qui puisse interférer),
- fichiers .wav placés dans le répertoire (sinon plantage),
- compilation sous D4, puis sous D7 (on ne sait jamais ;-) )

Résultat : aucun son au click de Button1.

2 explications à priori :

1) tu n'as pas testé dans les mêmes conditions que moi,
2) nous sommes dans la 4ème dimensions, nous vivons dans deux mondes parallèles qui n'auraient jamais dû se rencontrer, et l'univers va incessament s'autodétruire. Brrrr....

Sérieux, je ne comprends pas.
Utilisateur anonyme
10 déc. 2007 à 15:29
@ Japee :

je confirme tes craintes ...

avec ton code tu as des fuites de mémoire ;-(

ce qui est normal en soit.

Je m'explique, tu alloues deux fois de la mémoire pour "Data" et tu la libères qu'une fois. Donc ton premier appel à GetMem est perdu. (#^.^#)
Utilisateur anonyme
10 déc. 2007 à 15:12
@ Japee :

tu penses bien que j'ai testé le code avant de le poster ici ^^

et je te garanti que ça fonctionne tel quel

l'as tu au moins essayé ?

je sais le code prête à confusion mais ça fonctionne (je viens refaire les teste)

sinon pour SND_SYNC je l'ai mis dans l'exemple c'est justement pour être sur d'entendre les deux sons

Pour les fuites de mémoire il existe une variable très pratique :
ReportMemoryLeaksOnShutDown mais que pour les utilisateur de Turbo Delphi pour les autres il y a MemCheck qui, me senble-t-il, est gratuit
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
10 déc. 2007 à 14:58
Moi quand je veux verifier une fuite de mémoire, je mets la procedure/fonction dans un timer très court, et je lance le timer.
Ensuite direction le gestionnaire de tâche, si il y a une fuite on voit très rapidement la charge dediée augmenter sans raison.

Bien sûre ça ne dit pas précisement où est le problème mais ça peut permettre de gagner du temps si on utilise beaucoup de procedures "douteuses".

Si ca peut aider ...
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
10 déc. 2007 à 14:42
Ah oui, l'utilisation des flux...
J'ai pas trop l'habitude de faire joujou avec.
Mais il me semble que tu libère trop vite le stream et que les pointers sont désalloués avant leur utilisation dans Button1Click1 => donc pas de son.
Je l'ai refait comme ça, mais je ne suis pas sûr qu'ainsi il n'y a pas de fuites mémoire :

var
MemoryStream: TMemoryStream;
Data : PByte;
PTic, PTac : Pointer;

procedure TForm1.FormCreate(Sender: TObject);
begin
//ReportMemoryLeaksOnShutDown := True;
MemoryStream := TMemoryStream.Create;
with MemoryStream do
begin
LoadFromFile('Tic.Wav');
GetMem(Data, Size);
ReadBuffer(Data^, Size);
PTic := Data;

LoadFromFile('Tac.Wav');
GetMem(Data, Size);
Seek(0, soFromBeginning);
ReadBuffer(Data^, Size);
PTac := Data;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
PlaySound(PTic, 0, SND_ASYNC Or SND_MEMORY);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
PlaySound(PTac, 0, SND_ASYNC Or SND_MEMORY);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeMem(Data);
MemoryStream.Free;
end;

Qu'en penses-tu ? That's right ?
(j'ai aussi remplacé SND_SYNC par SND_ASYNC, mon côté prudent, même si les sons utilisés ici sont très brefs).
Utilisateur anonyme
10 déc. 2007 à 13:04
Regarde ce bout de code :

C'est une alternative pour le son afin d'éviter de nombreux accès au disque inutiles ;-)

Var
PTic, PTac : Pointer;
procedure TForm1.Button1Click(Sender: TObject);
begin
PlaySound(PTic, 0, SND_SYNC Or SND_MEMORY);
PlaySound(PTac, 0, SND_SYNC Or SND_MEMORY);
end;

procedure TForm1.FormCreate(Sender: TObject);
Var
Data : PByte;
begin
//ReportMemoryLeaksOnShutDown := True;
With TMemoryStream.Create do Try
LoadFromFile('Tic.Wav');
GetMem(Data, Size);
ReadBuffer(Data^, Size);
PTic := Data;
FreeMem(Data);
Finally
Free;
End;

With TMemoryStream.Create do Try
LoadFromFile('Tac.Wav');
GetMem(Data, Size);
ReadBuffer(Data^, Size);
PTac := Data;
FreeMem(Data);
Finally
Free;
End;
end;

et il n'y a pas de fuites de mémoire ^^
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
10 déc. 2007 à 00:51
Salut khawarizm,

Merci pour ton appréciation.

"l'utilisation d'un thread dans ce code serait elle une erreur ? "
Cela dépend. Je ne vois pas à priori quelle tâche je pourrais vouloir placer dans un thread.
Je pense améliorer la vitesse d'affichage en utilisant la méthode que me suggère Cirec. Ca devrait largement suffire.

Je serai très heureux si ce source peut te rendre service.
khawarizm Messages postés 116 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 4 août 2010 1
9 déc. 2007 à 17:50
Bonjour ; un des rares sources intéressant et surtout claire et bien commenté que j'ai pu lire et suivre (à part, bien sur, quelques commendes que je connaissais pas et que j'ai chercher dans l'aide de Delphi et aussi l'unite Matrix et j'essai de me concentrer pour l'assimiler ) tu a tout a fait raison de dire que c'est un didacticiel , je l'est bien vu de cette façon et comme je ne me permet pas de noter le source vu ton niveau de programmation (par rapport au mien) , je me contente de te REMERCIER .

Question : l'utilisation d'un thread dans ce code serait elle une erreur ?
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 déc. 2007 à 16:35
@Cirec

"à la place de créer un bitmap pour récupérer l'image et ensuite la dessiner pourquoi ne pas avoir utiliser directement la méthode Draw de l'ImageList"

Oui, il faut que j'essaye, ça me plait. Et si on peut grignoter en rapidité d'affichage...

"et désolé de t'avoir fait tant de frayeurs ^^"
Bah, t'en fais pas, même pas eu peur...
Quoi que... S'il avait fallu que je refasse tout (cas extrême, certes) parce que ça compilait nulle part... pas lol du tout ! :-(

Et merci pour ton appréciation. :-)
Utilisateur anonyme
9 déc. 2007 à 13:42
'a y est ... j'ai enfin réussit à faire fonctionner le jeu :-p

C'est le menu "Tricher" qui m'a "enduit d'erreur" (© Japee) ^^
Et tout comme Caribensila je n'ai jamais joué au démineur ...

enfin grâce à ton explication "PRÉCISIONS CONCERNANT LES CASES A COCHER : " tout fonctionne correctement.

Pour le code :
On pourrait certainement le accourcir mais il y perdrait en lisibilité

Par contre dans DGUtils (même si la fonction n'est plus utilisée c'est juste pour faire avancer le schmilblik)
à la place de créer un bitmap pour récupérer l'image et ensuite la dessiner
pourquoi ne pas avoir utiliser directement la méthode Draw de l'ImageList ?

à mon avis (je n'ai pas testé) ça sera aussi rapide que la méthode actuellement utilisée voir même moins lourd que l'utilisation de plusieurs TImage .... non ?

Dans tous les cas c'est du chouette boulot ... Bravo

et désolé de t'avoir fait tant de frayeurs ^^
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
9 déc. 2007 à 00:46
J'avais ma chaîne à donf...
Alors le 1er coup, pour boumer ça a boumé!
'suis tout estourbi...

En tout cas, le son y marche super bien !
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 déc. 2007 à 00:38
Le démineur, on s'y éclate, Cari ! ^^

Justement, en trichant, on voit mieux la logique, il me semble, et ça vaut toutes les explications et règles du jeu du monde, toujours un peu ch...es.

Je vais rajouter là-haut quelques explications concernant les options des checkboxes, car ce n'est forcément évident d'en intégrer la logique.

Bien content que ça compile chez toi aussi, Cantador.

Sinon, vous, ça boume ?
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
9 déc. 2007 à 00:23
Salut,

Après avoir changé:

var IsTic : Boolean;// = True;
begin
IsTic := true;

dans "procedure TMainForm.TimerTimer(Sender: TObject);"

ça compile à l'aise sur D7.

Mais comme je n'avais jamais joué au démineur... attends un peu avant la défenestration, Japee! ;)
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 déc. 2007 à 00:17
çà compile sous D7.
j'aime bcp l'explosion de la mine..
@+
Utilisateur anonyme
9 déc. 2007 à 00:01
Pour la compilation ce n'est pas une question de version
mais de Directive de compilation

sinon pour le reste je dois être trop mauvais ou trop c...
puisque même avec les trois versions que tu m'as envoyé je n'y arrive toujours pas !!!! j'ai toujours le même résultat à savoir pas de changement pour ces deux options (Voir mines et Indication sous mine)

Pour ce soir je laisse tomber
peut être que demain ça fonctionnera mieux ;-)
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
8 déc. 2007 à 23:38
Merci John Dogget, j'étais prêt à sauter par la fenêtre...
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
8 déc. 2007 à 23:28
Pour info, ça compile nickel du premier coup chez moi (D7 pro)
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
8 déc. 2007 à 23:16
Bah, c'est pas grave, le son du tic tac n'est pas terrible de toute manière, et le tic vaut le tac (et toc!) ^^
Je verrai ça en profondeur plus tard, là je gave grave sur ce code, le débogage m'a vraiment pris la tête.
C'est pas sympa pour toi, mais j'espère que tu es le seul à avoir la poisse avec mon code, car j'aurais aimé avoir ton avis, même s'il doit être sévère (mais juste, hein ?) ;-)
Utilisateur anonyme
8 déc. 2007 à 22:58
Attention,
la modification que tu as apportée à la ligne 371 ne jouera qu'un seul son

pour que les deux sons soient joués il faut la déclarer en globale comme je l'ai fait dans mon post
Utilisateur anonyme
8 déc. 2007 à 22:51
Bon décidément je suis maudit ;)

j'ai compilé le code sous D7 et Turbo Delphi et rien à faire ...
les deux me donne le même résultat !!!

Si tu le veux bien envoie moi l'exe (sur ma boite Hotmail ... tu sais ou la trouver ;-) ) afin de pouvoir comparer
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
8 déc. 2007 à 22:36
Bon, et en plus mon zip qui ne veut pas se mettre à jour...

Cirec, en corrigeant la ligne 371, ça fonctionne chez moi sous D7, je viens de tester.

Par contre, je n'aime pas du tout l'aspect que ça donne avec le XPMan sous D7... Berk... (voir capture pour la différence)
Utilisateur anonyme
8 déc. 2007 à 22:18
Bon en cherchant un peut ...
MatrixFlag est toujours à zéro chez moi et du coup ne peut donc pas afficher les images

Pourquoi .... mystère et boule de gomme ;-)
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
8 déc. 2007 à 22:05
OK.

Je viens de vérifier sous D7, effectivement la constante typée ne passe pas (il doit y avoir une option d'environnement à cocher.
En attendant que je corrige, ceux à qui ça pose problème peuvent remplacer par :

var
IsTic: Boolean;// = True;
à la ligne 382.

Désolé.
Utilisateur anonyme
8 déc. 2007 à 22:05
J'ai tout essayé et rien à faire
je n'obtiens pas le résultat escompté

et la seule modification que j'ai apporté au code pour qu'il compile c'est :

Var
IsTic: Boolean = True;
{ Gestion du temps écoulé, affichage et son }
procedure TMainForm.TimerTimer(Sender: TObject);
{Const
IsTic: Boolean = True;}
Begin
...
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
8 déc. 2007 à 21:57
Salut Cirec,

Bizarre.
J'ai pourtant vérifié 2 fois plutôt qu'une avant d'envoyer.
Je télécharge le zip et je vérifie...

Ah oui...
Pour que "voir indices" et "voir mines" soient opérationels, il faut que "tricher" soit coché.
Et pour "indications sous mines", il faut que "voir mines" soit décoché, sinon les mines empêchent de voir.
Utilisateur anonyme
8 déc. 2007 à 21:39
Voir mines et indication sous mine n'a aucun effet chez moi ?
Utilisateur anonyme
8 déc. 2007 à 21:05
Salut,

Dans l'unité Main ligne 382 : Error: Left side cannot be assigned to

Pourquoi avoir choisi une constante ?

Pour le reste j'ai pas encore regardé le code ....
mais j'y travail ;-)