Quelques questions...

Sujets variés concernant le développement en PureBasic
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Merci :)

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

Message par Anonyme »

Juste comme ca :D
j'espère que c'est mes exemples en isometrie qui t'on fait changé d'avis. :D
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message 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 :)
comtois
Messages : 5191
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Anonyme

Message par Anonyme »

Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message 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.
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message 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
Anonyme

Message 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:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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: )
Dernière modification par Backup le ven. 07/juil./2006 0:21, modifié 1 fois.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

oui un peu :)
Image
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message 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 :)
Anonyme

Message 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
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message 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:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Oui mais pourquoi ce retour est-il égal à 1 ? Il devrait être égal à 0 et donc provoqué une erreur.
Répondre