Page 2 sur 4

Publié : dim. 02/juil./2006 15:38
par Joubarbe
Merci :)

Oui oui c'est moi, pourquoi ...?

Publié : dim. 02/juil./2006 15:50
par Anonyme
Juste comme ca :D
j'espère que c'est mes exemples en isometrie qui t'on fait changé d'avis. :D

Publié : dim. 02/juil./2006 18:46
par Joubarbe
Bah j'aimerais faire un jeu de stratégie tour par tour ; un petit (très petit :) ) "civilization-like". Il me semble que cela doit être faisable si l'on y consacre suffisament de temps. J'ai d'abord pensé à de la 3D puis paf ! Et pourquoi pas de la 2D iso, c'est magique l'isométrique :) J'en profite :

Le Projet est-il faisable sous PureBasic ?
L'isométrique est-elle difficile à reproduire ?

Merci :)

Publié : dim. 02/juil./2006 19:27
par comtois
Joubarbe a écrit :Le Projet est-il faisable sous PureBasic ?
Oui
L'isométrique est-elle difficile à reproduire ?
Aucune idée, je dirais non , il y a quelques tuts sympas sur le net pour différents formats isos, j'ai plus les liens mais en cherchant tu trouveras facilement , et puis il y a des codes sources exemple sur ce forum et sur le forum anglais.

et voici un exemple de jeu iso très bien réalisé fait avec PureBasic
http://purebasic.fr/english/viewtopic.php?t=15071

Publié : dim. 02/juil./2006 19:38
par Anonyme

Publié : dim. 02/juil./2006 20:40
par Joubarbe
Si CplBator, mais ne connaissant pas encore parfaitement le PureBasic, je pose la question :)

Puis j'ai acheté le bouquin en anglais, alors je préfère l'attendre avant de m'y mettre réellement :) Mais oui, il est certains que cela m'aidera dans l'avenir.

Publié : jeu. 06/juil./2006 22:27
par Joubarbe
Euh, une petite question toute bête. Un point de détail :)

Dans la ligne suivante :

Code : Tout sélectionner

If InitSprite() = 0 Or OpenScreen(1024,768,32,"Test") = 0
  MessageRequester("Error", "Erreur !", #PB_MessageRequester_Ok)
EndIf
Je comprends tout à fait le principe et sais l'utiliser mais je me demande comment l'ordi fait pour ouvrir une fenêtre 1024,768,32 alors que je ne fais que déclarer une condition ?

Ne serait-il pas normal de déclarer ensuite OpenScreen(1024,768,32,"test"), ce qui signifierait "j'ouvre la fenêtre" ET "si la fenêtre ne s'ouvre pas pour raison x alors message d'erreur".

Voilà, c'est juste pour pouvoir mieux comprendre Monsieur le PC :)

Merci

Publié : jeu. 06/juil./2006 23:25
par Anonyme
Langage basic :

Code : Tout sélectionner

If InitSprite() = 0 Or OpenScreen(1024,768,32,"Test") = 0 
  MessageRequester("Error", "Erreur !", #PB_MessageRequester_Ok) 
EndIf
Langage humain :

Code : Tout sélectionner

Si tu n'arrives pas à initialiser les sprites ou si tu n'arrives pas à ouvrir l'écran
Message d'erreur = ERROR !
Finsi
en gros , si il renvois 0 alors l'initialisation à échoué, sinon c'est ok. :wink:

Publié : jeu. 06/juil./2006 23:35
par Backup
Joubarbe a écrit : Je comprends tout à fait le principe et sais l'utiliser mais je me demande comment l'ordi fait pour ouvrir une fenêtre 1024,768,32 alors que je ne fais que déclarer une condition ?
tu ne declare pas une condition seulement, tu verifie si la condition
en question est valable ou pas, et si c'est bon tu lance la commande d'ouverture de fenetre (tous ça dans la meme ligne de code !)
Ne serait-il pas normal de déclarer ensuite OpenScreen(1024,768,32,"test"), ce qui signifierait "j'ouvre la fenêtre" ET "si la fenêtre ne s'ouvre pas pour raison x alors message d'erreur".

Voilà, c'est juste pour pouvoir mieux comprendre Monsieur le PC :)

Merci
le "OR" est un OU non exclusif, c'est ou l'un ou l'autre ou bien les deux ! :D

ne pas confondre avec XOR ! :D

personellement je ne teste jamais si les commandes se lancent ou pas !
car en mettant au point le prg, on vois bien si ça deconne ou pas ! :D

je garde ce genre de test pour les peripheriques, comme le joystick
car tout le monde n'en a pas de branché en permanence
mais tester openwindows, ou meme la presence d'une souris, est un peut
exageré, je trouve :D

dans ton cas , j'ecrirai juste

Code : Tout sélectionner


InitSprite() 
OpenScreen(1024,768,32,"Test") 
et voila ! :D
(Je sens que certain vont pas etre d'accord ! :lol: )

Publié : jeu. 06/juil./2006 23:43
par Flype
oui un peu :)

Publié : ven. 07/juil./2006 1:12
par Joubarbe
et si c'est bon tu lance la commande d'ouverture de fenetre (tous ça dans la meme ligne de code !)
C'est bien là le problème, moi ce que je comprends de la ligne, c'est que le pc fait une vérification de l'openscreen, mais pour moi la condition n'est pas vraie puisque nulle part je la déclare en tant que tel.
En français :

SI OpenScreen=0 ALORS message d'erreur SINON print "bonjour"
ne signifie pas
"SI OpenScreen=0 ALORS message d'erreur SINON ouvre l'OpenScreen et print "bonjour"

Je m'étonne de ne pas avoir à programmer la deuxième phrase...

En espérant me faire comprendre :)


EDIT (pour insister encore plus :) )
et si c'est bon tu lance la commande d'ouverture de fenetre (tous ça dans la meme ligne de code !)
Pour moi ce n'est jamais bon :)

Publié : ven. 07/juil./2006 1:28
par Anonyme
moi je comprends ce que tu veut dire.

Voici en gros comment cela se décompose

le programme va tester cette ligne

Code : Tout sélectionner

If Machin() = 0
code....
endif
il va le décomposé comme cela

If
Machin()
0
...
endif


le programme , tombe sur IF, alors il sait qu'il va faire une sorte de "test"
ensuite il execute Machin() suivant le retour de Machin() il entre dans le if/endif, donc si Machin() = 0 alors il entre ds la boucle sinon il effectue un saut après endif.

Essaye ca :

Code : Tout sélectionner

Resultat = openscreen(800,600,32,"")

if Resultat=0
Messagerequester("","pas d'ecran! na!")
endif
closescreen()

debug Resultat

Publié : ven. 07/juil./2006 1:37
par Joubarbe
Tiens, quand je fais ça, PureBasic déconne avec une erreur microsoft "Envoyez le rapport" ou "Ne pas envoyer" patati patata :)

Sinon dans ton exemple, tu déclares clairement après le IF...ENDIF que tu vas ouvrir une fenêtre si machin()=0. Or, moi je ne fais pas cette ultime déclaration dans ma commande, il n'y a pas d'OpenScreen après ou avant mon IF...ENDIF.

Je dois commencer à être un peu chiant là :)

EDIT : Par contre, l'erreur Windows me gêne un peu, je fonctionne avec le jaPBe mais avec PureBasic original ça ne marche pas non plus, une solution ? Merci.
EDIT2 : Ah oui, je n'avais pas mis l'initsprite() :oops:

Publié : ven. 07/juil./2006 1:47
par Backup
oui comme te l'indique Cpl.Bator

si tu fais

Code : Tout sélectionner

Resultat = openscreen(800,600,32,"")

if Resultat=0
Messagerequester("","pas d'ecran! na!")
endif 
c'est tres clair !

mais sache que lorsque tu fait directement

Code : Tout sélectionner

if openscreen(800,600,32,"")
ça marche parceque ça n'est pas la commande openscreen(800,600,32,"") qui est annalysé par le purebasic
mais son parametre de Retour !!

en fait implicitement faire


Code : Tout sélectionner

if openscreen(800,600,32,"")
reviens a faire

Code : Tout sélectionner


Resultat = openscreen(800,600,32,"")

if Resultat=0

n'oublie pas qu'une comande purebasic est comparable a une FONCTION
ou une procedure avec Retour !!

en basic standart dans :

openscreen(800,600,32,"")

tu as l'appel de la fonction "openscreen"
avec passage des parametres "(800,600,32,"")"

et automatiquement cette fonction renvoie un "etat"

c'est pourquoi on peut faire

Resultat = openscreen(800,600,32,"")

dans ce cas le "retour" "l'etat de la fonction" est renvoyé dans la variable
"Resultat "

mais si tu utilise un "if" , c'est Directement le "retour" de la fonction qui est evalué par la condition , et non pas la fonction elle meme
:D

Publié : ven. 07/juil./2006 1:52
par Joubarbe
Oui mais pourquoi ce retour est-il égal à 1 ? Il devrait être égal à 0 et donc provoqué une erreur.