Page 1 sur 1

HexaScrabble Linux

Publié : dim. 08/janv./2012 9:55
par SPH
Haaa tiens, je me disais que j'allais mettre HexaScraable sur linux. Ou plutot non, VOUS allez le mettre car je ne sais pas le faire.
Mon code n'a rien de secret, le voici : http://xmas.free.fr/hexascrabble_12.pb
Les datas sont ici : http://xmas.free.fr/HexaScrabble.zip

Je pense que mon code est facilement adaptable. Mais si vous reperez une instruction non compatible, dites le moi et je verrais ce que je peux faire.

A VOUS de jouer (prendre la voix d'Eric CARTMAN) :lol: :lol:

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 16:19
par Guimauve
Bonjour SPH,

J'ai commencer à regarder ton code et déjà je vois quelques soucis.

1. Les séparateurs dans les chemins d'accès aux différents répertoires n'est pas le même sous Windows que sous Linux et MacOS. Sous Windows c'est "\" alors que sous Linux et Mac c'est "/". Pour démêler le tout, un petit :

Code : Tout sélectionner

CompilerSelect #PB_Compiler_OS
    
  CompilerCase #PB_OS_Windows 
    #PathSep = "\"
    ; Autres éléments spécifique à Windows
    ; ...
    
  CompilerCase #PB_OS_Linux
    #PathSep = "/"
    ; Autres éléments spécifique à Linux
    ; ...
    
  CompilerCase #PB_OS_MacOS
    #PathSep = "/"
    ; Autres éléments spécifique à MacOS
    ; ...
    
CompilerEndSelect
2. Dans soucis de simplification, l'ouverture du screen devrait ressembler à ceci :

Code : Tout sélectionner

ExamineDesktops()
scr_w = DesktopWidth(0)
scr_h = DesktopHeight(0)

If OpenScreen(scr_w, scr_h, 32, "HexaScrabble") = 0
  MessageRequester("Erreur", "OpenScreen impossible")
  End
EndIf
3. Si on souhaite faire une vraie installation sous Linux, le répertoire où les joueurs sauvegardent leurs pointages ne peut se trouver dans le répertoire du programme. Il doit être placé dans le "/home/nom_utilisateur/" idéalement dans un sous répertoire ".hexascrabble/".

Sous Windows il est préférable de sauvegarder les pointages dans le répertoire "Documents and Setting", je ne sais plus trop comment il s'appelle, puisque normalement on sauvegarde uniquement les données qui se trouvent là, les programmes on les réinstallent. Il y a donc un risque de perte de résultats.

Pour le reste j'étudie encore.

A+
Guimauve

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 16:58
par SPH
Merci.

Pour la resolution, elle doit etre entre 1024/x et 1388/y. Donc, pas de resolution comme le bureau.
Pour la sauvegarde, j'ai pas compris. Mais elle est possible comme je l'ai prevu je pense.

Je t'ecoute pour tes futurs remarques. :idea:

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 17:38
par Guimauve
Re-Bonjour,

Pour le problème de sauvegarde, si ton programme se trouve dans le répertoire de l'utilisateur, il n'y a pas de problème ton programme pourra lire et écrire les Scores dans le répertoire où il se trouve. En revanche si tu fais une installation propre pour que tout les utilisateurs puisse jouer avec "HexaScrabble" et bien :

Les fichiers ressources du jeu doivent être installées dans le répertoire : "/usr/share/games/hexascrabble/"
Le fichier exécutable ("hexascrable") du jeu doit être installer dans le répertoire : "/usr/game/"
Le fichier "hexascrabble.desktop" doit être installer dans le répertoire : "/usr/share/applications/"
L'icône de présentation "hexascrabble.png" (128X128) doit être installer dans le répertoire : "/usr/share/pixmaps/"

Bien entendu ces répertoires sont "Lecture seule", ce qui implique que les "Scores" doivent être sauvegardés dans un autre répertoire, par exemple : "/home/nom_utilisateur/.hexascrable/"

Pour ce qui est de la résolution il est préférable de prendre celle du bureau, de mettre le fond noir puis centrer tout l'affichage. L'idée est d'éviter d'afficher une résolution 4:3 sur un écran 16:9. Si non l'image devient déformée et l'expérience n'est pas agréable. Je suis confronté à ce problème avec le jeu "MX vs ATV Unleashed" qui lui est conçu pour un écran 4:3 alors que mon écran est un 16:10. Résultat il me faut émuler un bureau virtuel avec WINE à une résolution du jeu pour que l'affichage soit correct et c'est très énervant.

Lien sur les résolutions d'écran Standard

A+
Guimauve

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 18:46
par SPH
Guimauve a écrit :Re-Bonjour,

Pour le problème de sauvegarde, si ton programme se trouve dans le répertoire de l'utilisateur, il n'y a pas de problème ton programme pourra lire et écrire les Scores dans le répertoire où il se trouve. En revanche si tu fais une installation propre pour que tout les utilisateurs puisse jouer avec "HexaScrabble" et bien ...
Fais comme tu le sent

Pour les/ et \, tu peux facilement les corriger.

Pour la resolution, tu vas voir le big probleme si tu prend la resolution du bureau (essaye et tu verras)

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 19:14
par Guimauve
Re-Bonjour,

Les changements effectuer :

1. Remplacer "GetTickCount_()" par "ElapsedMilliseconds()" --> [Il y en a environ 50]
2. Présentement le code original ne compile même pas, j'ai un "Accès Mémoire Invalide" sur la commande "DisplayTranslucentSprite()". Pour le faire fonctionner, j'ai dû faire

Code : Tout sélectionner

If StartSpecialFX()
  DisplayTranslucentSprite(1,(scr_w-SpriteWidth(1)) >> 1,(scr_h - SpriteHeight(1)) >> 1, i)
  StopSpecialFX()
EndIf
À noter que je fais afficher le Sprite centré à l'écran.

Problèmes :

1. LoadModule(1, "zik" + #PathSep +"0.mod") ne fonctionne pas, sous Linux, les extensions de fichier sont sensible à la casse. ".mod" est différent de ".MOD". Un petit coup de :

Code : Tout sélectionner

CompilerSelect #PB_Compiler_OS
		
	CompilerCase #PB_OS_Windows 
		#PathSep = "\"
		; Autres éléments spécifique à Windows
		; ...
		
	CompilerCase #PB_OS_Linux
		#PathSep = "/"
		; Autres éléments spécifique à Linux
		; ...
		
	CompilerCase #PB_OS_MacOS
		#PathSep = "/"
		; Autres éléments spécifique à MacOS
		; ...
		
CompilerEndSelect

If ExamineDirectory(0, "zik", "*.MOD") <> 0
  
  While NextDirectoryEntry(0) <> 0
    
    FileName.s = DirectoryEntryName(0)
    
    If Left(FileName, 1) <> "."
      FilePart.s = StringField(FileName, 1, ".")
      Extension.s = LCase(StringField(FileName, 2, "."))
      RenameFile("zik" + #PathSep + FileName, "zik" + #PathSep + FilePart + "." + Extension)
    EndIf
    
  Wend
  
EndIf
Corrige le problème.
2. Le curseur ne bouge pas, c'est un bogue qui remonte à plusieurs mois sous Linux et il n'a pas été corrigé.

A+
Guimauve

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 19:33
par SPH
Guimauve a écrit :2. Le curseur ne bouge pas, c'est un bogue qui remonte à plusieurs mois sous Linux et il n'a pas été corrigé.
Un bug qui sera corrigé quand ?

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 19:38
par Guimauve
Faudrait voir avec Fred, cela fait plus d'un an que le bogue à été rapporté et malheureusement faire un "bump" sur un bogue déjà rapporté c'est bon pour se faire taper sur les doigts. La solution alternative est de passer par la librairie SDL pour la gestion du clavier et de la souris.

Édit 1 : J'ai rapporté le bogue le 17 août 2010 sur le forum Anglais http://www.purebasic.fr/english/viewtop ... 23&t=43293
Édit 2 : Les premières fois où les problèmes avec la Souris en mode Screen Sous LInux ont été rapporté date du 4 décembre 2008 http://www.purebasic.fr/english/viewtop ... 23&t=39581

A+
Guimauve

Re: HexaScrabble Linux

Publié : dim. 08/janv./2012 20:23
par SPH
Ok j'avais donc bien ccompris (helas) que le bug viens de PB et que ca n'a pas ete corrigé.
Bon bin, c'est pas grave, je vais me contenter de la version windows...

Re: HexaScrabble Linux

Publié : mar. 10/janv./2012 11:32
par SPH
Guimauve, je ne sais pas si tu as le temps mais apparement, une version linux de mon jeu est un gros +
Puis je t'elire compileur linux de mon jeu ?
Pour cela, ca te dirais de passer par la library SDL ??

Enfin, je dis ca mais c'est toi qui decide...