CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Pascal] Création de formes avec ASCII

[R]Viper
[R]Viper
Niveau 10
12 octobre 2006 à 06:40:12

Bonjour à tous, je suis un ancien du forum création de jeux, pour ceux qui puissent me connaître.

Bon, j´ai un problème avec mon TP de programmation. Le but est de créer des formes à l´aide de lettres. Par exemple, un carré de 10 * 5 donnera...

CCCCCCCCCC
C________C
C________C
C________C
CCCCCCCCCC

Où _ représente des espaces.

Pour le carré, ca va, mais je dois le faire pour une pyramide et un triangle.

PYRAMIDE.
_ _ _ P
_ _ P _ P
_ P _ _ _ P
P P P P P P P

TRIANGLE
T
TT
T _T
T _ _ T
T T T T T

Hors, je n´ai aucune idée du comment faire pour les deux dernières. Voici mon code pour le carré et les consignes pour la création des formes...

http://rviper.free.fr/include/index.php?title=TP3

Je ne demande pas de code, je tiens à le faire moi-même, mais seulement une piste ou une partie d´algorythme serait très sympa.

Merci d´avance.

Fvirtman
Fvirtman
Niveau 10
12 octobre 2006 à 11:06:46

Le probleme revient exactement au meme que de faire des fonctions géométriques avec des pixels.
Finalement, en géométrie, tu aurais :
- une fonction qui trace un pixel a une coordonnée x,y donnée
Et tu veux programmer des fonctions qui font des lignes, des cercles, etc a partir de la...

Ici, tu as une fonction :
- une fonction qui ecrit un "C" x,y donnée.
A partir de la, si tu as une fonction :

procedure
TraceLigne(x1:integet,y1:integer,x2:integer,y2:int
eger) (* trace une ligne de x1,y1 a x2,y2)
Tu as gagné pour la pyramide non ? (il te suffira d´appeler la fonction 3 fois)

Pour tracer une ligne quelconque, regarde l´algorithme, tres connu, appelé "Bresenham" que tu trouveras sur google.

Fvirtman
Fvirtman
Niveau 10
12 octobre 2006 à 11:08:03

Note que l´algo de Bresenham a 2 formes : une pour tracer des lignes, une pour tracer des cercles :)

[R]Viper
[R]Viper
Niveau 10
12 octobre 2006 à 17:36:10

Tout d´abord, merci pour ta téponse. Par contre, je ne suis pas trop sur d´avoir compris, j´ai recherché pour l´agorythme de Bresenham mais comme tu l´as mentionné, c´est fait avec une droite.

Moi, en Pascal, ce que je dois faire c´est utiliser les commandes write(´T´) et writeln(´T´)

write(´T´) écrira un T et laissera le curseur après ce T
writeln(´T´) écrira un T et ramènera le curseur sur la ligne du dessous.

Donc, pour un triangle comme ceci..

T
TT
T_T
TTTT

Je devrais faire...

writeln(´T´);
write(´T´);writeln(´T´)
write(´T´);write(´ ´);writeln(´T´)
write(´T´);write(´T´);write(´T´);writeln(´T´)

Les ; séparent les caractères.

dnob700
dnob700
Niveau 10
12 octobre 2006 à 18:28:02

donc pour un triangle dont les coté mesure n tu as déjà tout ce qu´il te faut non ?

écrire un T

puis, pour i de 1 à n-2
ecrire un T, ecrire (i-1) espace (encore une boucle), écrire un autre T avec retour à la ligne.
fin de la boucle.

et tu écrit n T.

pour la pyramide, tu adapte cette méthode à la géométrie de la pyramide.

deepblue
deepblue
Niveau 16
12 octobre 2006 à 18:49:00

Je te fais le truic en php, tu pourras le refaire en pascal si tu le veux

deepblue
deepblue
Niveau 16
12 octobre 2006 à 19:43:19

Carré :
http://www.simmstein.be/test/ascii/carre.php?h=5&l=5&c=X
h = hauteur, l = largeur, c = caractere

Triange rectange :
http://www.simmstein.be/test/ascii/tri_rec.php?b=5&h=5&c=X
b = largeur base, h = hauteur, c = caractère

Pyramide : en cours de realisation

Fvirtman
Fvirtman
Niveau 10
12 octobre 2006 à 20:03:10

Tu n´as pas le droit au gotoxy ?
(en pascal, ça pose le curseur ou tu veux)
Bien sur, sans gotoxy, ça corse la difficulté ! Mais bon, c´est intéressant également !

Donc pour tracer avec uniquement write et writeln, utilise ce que t´ont mis deepblue et dnob.

Si tu as le droit a gotoxy, ce que je te propose reste en vigueur :)

[R]Viper
[R]Viper
Niveau 10
13 octobre 2006 à 04:22:55

dnob700 :d) Je comprends pas trop... est-ce que tu parles de faire chaque ligne manuellement?

deepblue :d) Merci, ca va m´être très utile, j´ai regardé vite vite et ca semble excellent, je transformerais pour Pascal.

Fvirtman :d) Non, jsutement, juste écrire des T et des espaces avec des boucles for do...

dnob700
dnob700
Niveau 10
13 octobre 2006 à 14:26:31

oui, je parle de faire chaque ligne manuellement, mais pas "à la main", c´est à dire que toutes les lignes sauf la première et la derière sont sur le même modèle : un ´T´, un certainnombre d´espace qu´on peut calculer, puis un ´T´ suivi d´un retour à la ligne.

Avec une bonne boucle, ça se fait tout seul.

Mais c´est la même chose que ce que t´as proposé deepblue mais avec moins de paramètre (j´ai considéré un triangle isocèle).

[R]Viper
[R]Viper
Niveau 10
28 octobre 2006 à 00:34:30

Bonjour à tous... finalement, le prof a donné un peu plus d´explication. Si ca vous intéresse, voici le code final... résultat? 100%. :)

http://rviper.free.fr/include/index.php?title=Programmation_TP3

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment