code ascii

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message 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.... :wink:

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! :lol:
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message 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
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Message 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.....
Dernière modification par Mindphazer le jeu. 26/juin/2008 13:39, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.....
Dernière modification par Backup le mar. 19/août/2014 12:56, modifié 1 fois.
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message par chikun »

Mindphazer
merci du conseil :wink: , 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 !! 8O :lol: :lol:

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)
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message 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 :x mais j'aime trop ça :P :lol: :lol: :lol:
tu veux un bisou? tu es mon maitre.....si si :wink: (mdrrr)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :D

c'est tres utile dans un Jeu

parcequ'une structure peut etre en fait le Corp d'un personnage :D

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 :D

"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 :)
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message par chikun »

merci dobro, je suis en ebulition et motivé... dsl d'avoir été "lourd", tu as été parient et tres clair....

:lol: les structrures :lol: voyons voir ça...a tres bientot , je vais decortiquer celà
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message par chikun »

puis c normal aussi, vous m'enlevez de ma charette pour me mettre a bord d'un Mig 29 Fulcrum...
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message 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
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message par chikun »

ok!!!!! :lol: forever < news pour moi ça , je m'en vais l'etudier (ouf chris à rien vu)
chikun
Messages : 185
Inscription : sam. 21/juin/2008 13:36

Message 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 

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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

Code : Tout sélectionner

Delay   (60)
     ClearConsole () 
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 !! :D

Bienvenu au 21em siecle, les Basic ont largement le temps de redessiner tout un ecran sans meme que tu le vois !! :lol:

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 :lol:
du coup les caractères sont bien mis au Hasard sur l'écran, mais toujours le même hasard !! :lol:


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

Message 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 !!
Répondre