Page 2 sur 4
Publié : jeu. 26/juin/2008 8:42
par djes
chikun a écrit :... avec ma pure demo avant que j'obtienne la full, qqun connait la soluce?
je repete clairement:
en mode console
un petit ecran et rempli de texte et je demande a locate, quiquinia à locate x,y ? (a l'emplacement du curseur).
longtemps on ecrivait: l$= screen$(x,y) ...
Chris stp ne me dis pas "si tu avait lu la doc....
mici
Pour dire tout haut ce que tout le monde pense tout bas : tu mélanges tout! La console actuelle n'a rien à voir avec l'affichage qu'il y avait sous DOS, qui reprenait le mode texte des cartes Hercules/CGA/... La console est aussi ce qu'on appelle un shell; si tu peux faire un pseudo affichage graphique, ça n'est pas géré de la même façon. Ca sert à faire des programmes à la unix, qui n'ont pas besoin d'interface graphique.
Maintenant, si tu veux absolument faire des trucs comme ça, puisque c'est toi qui gère l'écran, tu n'as qu'à te faire un petit tableau pour mémoriser ce que tu as déjà écrit à telle ou telle position, et le relire au besoin!
Sinon t'as qu'à te former à l'ANSI et utiliser un terminal videotext!

Publié : jeu. 26/juin/2008 9:23
par chikun
dobro:
ecoute , je rentre juste bouffer mais g pas tout lu , pq vouloir savoir ce kil y a aux coordonnées x,y d'un endroit de l'ecran ?
immagine qu'une centaine de lettre s'y balade et kil y a un tueur nommé "t" (affichage "T"); il cacule sa nouvelle position et se demande se qui s'y trouve !! je ne vais pas faire la comparaison des x,y des 99 autres lettres non !? avant je metais if screen$(x,y)<>"" ....
voilà, g pas le temps mais + tard je reviens , tu a peut etre repondu , je relirais mieux plus tard et merci
djes
tu comprends peut etre mieux maintenant...
sinon avec la version demo, dites moi comment faire ce genre de log
Publié : jeu. 26/juin/2008 10:56
par Mindphazer
Sans vouloir jouer les "donneurs de conseils", je pense comme les autres que tu ne t'y prends pas de la bonne manière : n'essaie pas de programmer comme tu le faisais il y a 25 ans : les langages, les systèmes et les matériels ont évolué (ou alors, ressort ton vieil Atari ou ton Oric), ça n'a -presque- plus rien à voir.
Essayer de refaire à l'identique les programmes que tu faisais il y a 25 ans, je l'ai fait moi aussi. Et j'ai vite laissé tomber : c'est très loin d'être simple.
Personnellement, lorsque je me suis mis à PB, j'ai d'abord lu la doc et la liste des instructions (pas de A à Z, hein. Mais au moins dans les grandes lignes), ça permet d'avoir une vision de ce qu'il est possible de faire et de voir si c'est susceptible de convenir.
J'avais besoin de développer des petites applis pour mon boulot (c'est la raison pour laquelle je ne poste pas de code sur ce forum, tout ce que je fais est pour un usage exclusivement professionnel et donc très spécifique), et PB m'a permis de le faire de manière assez rapide.
Voilà. Ce ne sont que de modestes conseils, fais-en ce que tu veux.......
PS : essaie aussi de faire un effort quand tu postes : le style SMS, c'est super chiant à lire.....
Publié : jeu. 26/juin/2008 13:18
par Backup
.....
Publié : jeu. 26/juin/2008 14:39
par chikun
Mindphazer
merci du conseil

, je tacherais de parcourir plus longuement la doc
pour savoir un peu plus sur "la bete" et ce qu'il est capable de faire. c promis
dobro
dis moi tu n'avais pas compris ça depuis le debut!?
ecoute c exactement le principe que je cherchais..et tu sembles me dire que je devrais faire ça autrement ? alors au risque de te daire repeter , comment faire ton prog autrement sans oublier que j'ai la version demo
je sais pas comment , mais je te revaudrais ta patiente
si tu m'ouvre cette nouvelle porte.
je vais potasser la doc, a plus tard les amis
Publié : jeu. 26/juin/2008 16:04
par Backup
chikun a écrit :
dis moi tu n'avais pas compris ça depuis le debut!?
ecoute c exactement le principe que je cherchais..et tu sembles me dire que je devrais faire ça autrement ?
ben
c'est autrement !!
je n'utilise pas de "Scan" d'écran genre "screen$(x,y) "
pas besoin , et puis cette méthode ne scan pas l'ecran , mais un tableau !!
c'est pourquoi depuis le debut, je te dit , que d'avoir une fonction qui "lis une lettre a l'écran" , ne sert a rien en PureBasic !!!!
Là je lit le contenu d'un tableau rien de plus
je te rapel ta question :
je n'arrive pas a savoir comment obtenir le code ascii (n°) a partir d'une position x,y de l'écran..
j'ai compris, je veux une fonction comme mes ancien Basic qui soit capable de lire une lettre a l'ecran genre : code_ascii=screen$(x,y)
Publié : jeu. 26/juin/2008 16:11
par chikun
ok ok , je voulais dire ...enfin je croyais qu'il fallait que je fasse autrement que d'utiliser "console" que s'était depasser....bon tu me rassures ....j'arrette de potasser, g suffisament d'élement pour coder...
tu m'as tuer avec
************ notre personage ************
personage(0)\x=40
personage(0)\y=12
personage(0)\identite= "O"
; ***************************************
entre ton prog du casse brique et celui ci dessus , tu me prives de
vacance

mais j'aime trop ça
tu veux un bisou? tu es mon maitre.....si si

(mdrrr)
Publié : jeu. 26/juin/2008 16:27
par Backup
chikun a écrit :
tu m'as tuer avec
************ notre personage ************
personage(0)\x=40
personage(0)\y=12
personage(0)\identite= "O"
; ***************************************
il s'agit des Structures !
c'est tres utile dans un Jeu
parcequ'une structure peut etre en fait le Corp d'un personnage
en faisant
Code : Tout sélectionner
Structure personage
identite.s ; identité de la lettre
x.l ; coordonée x
y.l ; coordonée y
vie.b ; vie
EndStructure
Dim personage.personage(100) ;
on cree une structure Personnage bref on construit notre petit bonhome
que l'on nommera personage(x)
et a l'interieur de cette structure personnage , on donne des caracteristiques qui lui serviron tout au long du jeu
"
identite.s" sera une Chaine qui recevra la Forme du personnage (a,b,c,d,e,O etc...)
"
x.l" sera un long qui recevra la coordonné X de notre Personnage
et
"
y.l" sera un long qui recevra la coordonné Y de notre Personnage
"
Vie.b" sera unn Boolean qui dira si notre personnage vie ou est mort !!
pour attribuer une valeur a l'une des constituante de notre personnage on a plus qu'a faire un truc comme ça :
Code : Tout sélectionner
personage(0)\x=40 ; on placera notre Personnage a la coordonée X 40
personage(0)\y=12 ; on placera notre Personnage a la coordonée Y 12
personage(0)\identite= "O" ; on lui atribuera la Forme d'un "O"
ensuite on pourra l'afficher concretement dans la console
Code : Tout sélectionner
; ************** Affichage du sprite dirigé *************
ConsoleLocate(personage(0)\x,personage(0)\y ) ; affiche aux bonnes coordonnées
Print(personage(0)\identite) ; affiche le caractere "O" correspondant au personnage(O)
; **************************************************
Bien sur si j'avais voulu tenir compte du paramètre Vie de notre personnage , il aurai fallu que j'écrive
on affiche
seulement Si le parametre \vie de notre personage est egale a 1
; ************** Affichage du sprite dirigé *************
If personage(0)\vie=1
ConsoleLocate (personage(0)\x,personage(0)\y ) ; affiche aux bonnes coordonnées
Print (personage(0)\identite) ; affiche le caractere "O" correspondant au personnage(O)
endif
; **************************************************
dans les Tuto de la rubrique débutant tu as une explication sur les Structures

Publié : jeu. 26/juin/2008 17:26
par chikun
merci dobro, je suis en ebulition et motivé... dsl d'avoir été "lourd", tu as été parient et tres clair....

les structrures

voyons voir ça...a tres bientot , je vais decortiquer celà
Publié : jeu. 26/juin/2008 17:32
par chikun
puis c normal aussi, vous m'enlevez de ma charette pour me mettre a bord d'un Mig 29 Fulcrum...
Publié : jeu. 26/juin/2008 18:32
par chikun
heu monsieur dobro:
Code : Tout sélectionner
For i = 1 To 100
xp= Random (79)
yp= Random (24)
id= Random (127)+33
ConsoleLocate (xp,yp )
Print ( Chr (id))
personage(i)\x=xp
personage(i)\y=yp
personage(i)\identite= Chr (id)
Next i
pourquoi cette boucle est plaçée dans "repeat ------ until", j'y retourne car le but etait d'afficher toute les lettres et ensuite de tester !
? je ne vois meme pas "until"...... pourtant il tourne ton prog
Publié : jeu. 26/juin/2008 18:39
par chikun
ok!!!!!

forever < news pour moi ça , je m'en vais l'etudier (ouf chris à rien vu)
Publié : jeu. 26/juin/2008 18:44
par chikun
bon voilà , je l'ai legerement modifier (ça scintille moin) mais je suis naze je vais arreter là pour ce soir (encore un truc a regler):
Code : Tout sélectionner
; Code : Dobro
; Purebasic 4.20
Structure personage
identite.s ; identité de la lettre
x.l ; coordonée x
y.l ; coordonée y
vie.b ; vie
EndStructure
Dim personage.personage(100) ;
Resultat = OpenConsole ()
EnableGraphicalConsole (1)
ConsoleCursor (0)
ConsoleTitle ( " by Dobro" )
;{; Preambule :
; ************ notre personage ************
personage(0)\x=40
personage(0)\y=12
personage(0)\identite="O"
; ***************************************
; affichage des lettres a l'ecran *********
RandomSeed (8 )
For i = 1 To 100
xp= Random (79)
yp= Random (24)
id= Random (127)+33
ConsoleLocate (xp,yp )
Print ( Chr (id))
personage(i)\x=xp
personage(i)\y=yp
personage(i)\identite= Chr (id)
Next i
Input()
; ****************************************
Repeat
;{; ************ le clavier ******************
Chaine$ = Inkey ()
Resultat = RawKey ()
If Resultat= 39 ; fleche droite
personage(0)\x=personage(0)\x+1 : If personage(0)\x>79: personage(0)\x=79: EndIf
EndIf
If Resultat= 37 ; fleche gauche
personage(0)\x=personage(0)\x-1: If personage(0)\x<0: personage(0)\x=0: EndIf
EndIf
If Resultat= 38 ; fleche haut
personage(0)\y=personage(0)\y-1: If personage(0)\y<0: personage(0)\y=0: EndIf
EndIf
If Resultat= 40 ; fleche bas
personage(0)\y=personage(0)\y+1: If personage(0)\y>24: personage(0)\y=24: EndIf
EndIf
; ****************************************
; ************** Affichage du sprite dirigé *************
ConsoleLocate (personage(0)\x,personage(0)\y )
Print (personage(0)\identite)
; **************************************************
; ********** calcul si collision avec une autre lettre ************
For i = 1 To 100
If personage(0)\x = personage(i)\x And personage(0)\y =personage(i)\y
ConsoleLocate (0,0 )
Print ( "Collision avec la lettre :" +personage(i)\identite )
EndIf
Next i
; ***********************************************************
ForEver
Publié : jeu. 26/juin/2008 18:49
par Backup
chikun a écrit :heu monsieur dobro:
Code : Tout sélectionner
For i = 1 To 100
xp= Random (79)
yp= Random (24)
id= Random (127)+33
ConsoleLocate (xp,yp )
Print ( Chr (id))
personage(i)\x=xp
personage(i)\y=yp
personage(i)\identite= Chr (id)
Next i
pourquoi cette boucle est plaçée dans "repeat ------ until", j'y retourne car le but etait d'afficher toute les lettres et ensuite de tester !
? je ne vois meme pas "until"...... pourtant il tourne ton prog
c'est tres simple c'est a cause qu'a chaque boucle je fais
et clearconsole() efface Toute la console !!
donc les caractères disparaissent
alors au début de la boucle ben je remet les caractères en place !!
Bienvenu au 21em siecle, les Basic ont largement le temps de redessiner tout un ecran sans meme que tu le vois !!
pour info , le Purebasic c'est en fait une Surcouche de l'Assembleur
donc ce Basic n'as rien a envier a ce langage niveau Vitesse !!
de plus tu peux intégrer de l'assembleur directement dans ton code Purebasic
on peux assez facilement faire un interpreteur avec PureBasic
voir mon PureGolo3D sur mon site , c'est un interpreteur LOGO
pourquoi ils ne bougent pas les caractères, alors que j'utilise random() ??
ben grâce au RandomSeed(8)
qui Force le générateur aléatoire a repartir toujours avec la même séquence

du coup les caractères sont bien mis au Hasard sur l'écran, mais toujours le même hasard !!
je me suis permis le Luxe de freiner le prg avec un Delay(60)
pour 2 raisons,
1- ça redonne du temps au system, du coup l'aplication ne bouffe pas 100% des ressources de ton Ordi
2- ça "Synchronise" l'effacement avec le moniteur et evite un clignotement insupportable

Publié : jeu. 26/juin/2008 18:59
par Backup
chikun a écrit :bon voilà , je l'ai legerement modifier (ça scintille moin) mais je suis naze je vais arreter là pour ce soir (encore un truc a regler):
ben tu l'a modifié mais maintenant on ne vois plus le personage (0)
qui en principe se deplace a l'ecran avec les touches !!