Dessiner en hexa

Publié le 14 juillet 2014 par Benoît sous licence CC BY-SA 4.0.

Enoncé

Aujourd'hui nous allons faire un dessin en bitmap de taille 8x8.

Je vais vous donner 8 valeurs hexadécimales. Donc de 0 à 254 en décimal. Chaque valeur représente une ligne, donc avec 8 valeurs : 8 lignes, donc une image en 8x8.

Entrée

8 valeurs hexadécimales.

Exemple :

18 3C 7E 7E 18 18 18 18

Sortie

Une image de 8x8 qui représente les valeurs que vous lisez. Par exemple pour FF, c'est 1111 1111. 1 signifie qu'il faut dessiner sur cette case, 0 que non.

1111 1111 va donc afficher :

xxxxxxxx

Si la valeur d'après est 81, qui fait 1000 0001 en binaire, alors le dessin sera :

xxxxxxxx
x......x

Exemple de sortie sur 8 données :

......xx
....xxxx
...xxxxx
...xxxxx
......xx
......xx
......xx
......xx

Objectifs

Afficher les 4 images à partir des données ci-dessous :

FF 81 BD A5 A5 BD 81 FF
AA 55 AA 55 AA 55 AA 55
3E 7F FC F8 F8 FC 7F 3E
93 93 93 F3 F3 93 93 93

Travaux réalisés

Mon code

SIZE = 20

TextWindow.Write("Saisie (ex : 3E 7F FC F8 F8 FC 7F 3E) : ")

drawing = Text.ConvertToUpperCase(TextWindow.Read())

If Text.GetLength(drawing) <> 23 Then
  drawing = "3E 7F FC F8 F8 FC 7F 3E"
EndIf

For i = 1 To 8
  new_drawing[i] = ""
EndFor

y = 0

For i = 1 To Text.GetLength(drawing) Step 1
  chr = Text.GetSubText(drawing, i, 1)

  If chr = " " Then
    y = y + 1
  ElseIf chr = "0" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0000")
  ElseIf chr = "1" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0001")
  ElseIf chr = "2" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0010")
  ElseIf chr = "3" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0011")
  ElseIf chr = "4" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0100")
  ElseIf chr = "5" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0101")
  ElseIf chr = "6" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0110")
  ElseIf chr = "7" Then
    new_drawing[y] = Text.Append(new_drawing[y], "0111")
  ElseIf chr = "8" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1000")
  ElseIf chr = "9" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1001")
  ElseIf chr = "A" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1010")
  ElseIf chr = "B" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1011")
  ElseIf chr = "C" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1100")
  ElseIf chr = "D" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1101")
  ElseIf chr = "E" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1110")
  ElseIf chr = "F" Then
    new_drawing[y] = Text.Append(new_drawing[y], "1111")
  EndIf
EndFor

GraphicsWindow.Title  = "Rendu graphique"
GraphicsWindow.Width  = SIZE * 8
GraphicsWindow.Height = SIZE * 8
GraphicsWindow.Show()

For y = 0 To 7
  For x = 1 To 8
    If Text.GetSubText(new_drawing[y], x, 1) = "1" Then
      GraphicsWindow.BrushColor = "black"
      GraphicsWindow.FillRectangle(x * SIZE - SIZE, y * SIZE, SIZE, SIZE)
    EndIf
  EndFor
EndFor