From 8085e77c033d4f895b493d619dbe0934c6cf28cd Mon Sep 17 00:00:00 2001
From: Merlin Baviere <merlin.baviere@student-cs.fr>
Date: Wed, 30 Oct 2024 16:04:34 +0100
Subject: [PATCH] fin BE5

---
 BE4BE5.zip | Bin 0 -> 3535 bytes
 BE5/BE5.py | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 189 insertions(+), 7 deletions(-)
 create mode 100644 BE4BE5.zip

diff --git a/BE4BE5.zip b/BE4BE5.zip
new file mode 100644
index 0000000000000000000000000000000000000000..3fb59e6aef674921393f8f024c102486faca59d6
GIT binary patch
literal 3535
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

literal 0
HcmV?d00001

diff --git a/BE5/BE5.py b/BE5/BE5.py
index 52b42cc..da725d9 100644
--- a/BE5/BE5.py
+++ b/BE5/BE5.py
@@ -1,4 +1,6 @@
 import pyb
+import os
+
  
 data = "X8";    # patte connectée à l'entrée série du MAX7219 (DIN)
 load = "X5";    # patte de chargement des données (CS)
@@ -83,16 +85,196 @@ def setPixel(x,y,on,bitmap):
         if (bitmap[x]%(pow(2,(8-y))))//(pow(2,(7-y)))==1:
             bitmap[x]-=pow(2,(7-y))
 
-for i in range(8):
-    bitmap[i]=i
-updateDisplay(bitmap)
-print(bitmap)
-setPixel(5,5,False,bitmap)
-print(bitmap)
-updateDisplay(bitmap)
+def getPixel(x,y,bitmap):
+    return (bitmap[x]%(pow(2,(8-y))))//(pow(2,(7-y)))==1
+
+def testPixels():
+    bitmap = bytearray(8)
+    matrixOn(1)
+    matrixTest(0)
+    matrixDecode(0)
+    matrixDigits(7)
+    clearDisplay(bitmap)
+    # Trace un O
+    setPixel(1,2,1, bitmap); setPixel(2,2,1, bitmap); setPixel(3,2,1, bitmap)
+    setPixel(1,3,1, bitmap);                          setPixel(3,3,1, bitmap)
+    setPixel(1,4,1, bitmap);                          setPixel(3,4,1, bitmap)
+    setPixel(1,5,1, bitmap); setPixel(2,5,1, bitmap); setPixel(3,5,1, bitmap)
+    # Trace un K
+    setPixel(5,2,1, bitmap);                          setPixel(7,2,1, bitmap)
+    setPixel(5,3,1, bitmap); setPixel(6,3,1, bitmap)
+    setPixel(5,4,1, bitmap); setPixel(6,4,1, bitmap)
+    setPixel(5,5,1, bitmap);                          setPixel(7,5,1, bitmap)
+    updateDisplay(bitmap)
+ 
+def testPixels2():
+    bitmap = bytearray(8)
+    matrixOn(True)
+    matrixTest(False)
+    matrixDecode(False)
+    matrixDigits(7)
+    clearDisplay(bitmap)
+    x = 0
+    y = 0
+    while True:
+        setPixel(x, y, True, bitmap)
+        updateDisplay(bitmap)
+        setPixel(x, y, False, bitmap)
+        x = (x + 1) % 8
+        if x == 0:
+            y = (y + 1) % 8
+        pyb.delay(100)
+
+smiley = (
+    "  ****  ",
+    " *    * ",
+    "* *  * *",
+    "*      *",
+    "* *  * *",
+    "*  **  *",
+    " *    * ",
+    "  ****  "
+)
+frowney = (
+    "  ****  ",
+    " *    * ",
+    "* *  * *",
+    "*      *",
+    "*  **  *",
+    "* *  * *",
+    " *    * ",
+    "  ****  "
+)
+
+def displayPict(pict):
+    bitmap = bytearray(8)
+    clearDisplay(bitmap)
+    i = 0
+    for line in pict:
+        j = 0
+        for char in line:
+            if char== "*":
+                setPixel(i,j,1,bitmap)
+            j+=1
+        i+=1
+    updateDisplay(bitmap)
+    return bitmap
 
+def randomBitmap():
+    bitmap = bytearray(8)
+    for i in range(8):
+        for j in range(8):
+            setPixel(i,j,(os.urandom(1)[0] > 127) ,bitmap)
+    return bitmap
 
+def countNeighbours(x, y, bitmap):
+    vois = 0
+    list_vois=[((x + dx) % 8, (y + dy) % 8) for dx in (-1, 0, 1) for dy in (-1, 0, 1) if (dx, dy) != (0, 0)]
+    for i in list_vois:
+        if getPixel(i[0],i[1],bitmap):
+            vois+=1
+    return vois
 
+def lifeStep(bitmap):
+    res_bitmap = bytearray(8)
+    for x in range(8):
+        for y in range(8):
+            if countNeighbours(x,y,bitmap)==3:
+                setPixel(x,y,True,res_bitmap)
+            elif countNeighbours(x,y,bitmap)==2:
+                setPixel(x,y,getPixel(x,y,bitmap),res_bitmap)
+            else:
+                setPixel(x,y,False,res_bitmap)
+    for i in range(8):
+        bitmap[i]=res_bitmap[i]
+    updateDisplay(bitmap)
+    
+def gameOfLife():
+    bitmap = randomBitmap()
+    while True:
+        pyb.delay(200)
+        lifeStep(bitmap)
+        
+# Figures stables
+stableBlock = (
+  "        ",
+  "        ",
+  "        ",
+  "   **   ",
+  "   **   ",
+  "        ",
+  "        ",
+  "        "
+)
+def testBlock():
+    bitmap = displayPict(stableBlock)
+    pyb.delay(500)
+    lifeStep(bitmap)
+ 
+stableTube = (
+  "        ",
+  "        ",
+  "   *    ",
+  "  * *   ",
+  "   *    ",
+  "        ",
+  "        ",
+  "        "
+)
+def testTube():
+    bitmap = displayPict(stableTube)
+    pyb.delay(500)
+    lifeStep(bitmap)
+ 
+# Figures oscillantes
+oscBlinker = (
+  "        ",
+  "        ",
+  "        ",
+  "  ***   ",
+  "        ",
+  "        ",
+  "        ",
+  "        "
+)
+def testBlinker():
+    bitmap = displayPict(oscBlinker)
+    for i in range(2):
+        pyb.delay(500)
+        lifeStep(bitmap)
+ 
+# Vaisseaux
+shipGlider = (
+  "        ",
+  "        ",
+  "        ",
+  "        ",
+  "        ",
+  "***     ",
+  "  *     ",
+  " *      "
+)
+def testGlider():
+    bitmap = displayPict(shipGlider)
+    for i in range(32):
+        pyb.delay(500)
+        lifeStep(bitmap)
+ 
+shipLWSS = (
+  "        ",
+  "        ",
+  "*  *    ",
+  "    *   ",
+  "*   *   ",
+  " ****   ",
+  "        ",
+  "        "
+)
+def testLWSS():
+    bitmap = displayPict(shipLWSS)
+    for i in range(16):
+        pyb.delay(500)
+        lifeStep(bitmap)
 
     
         
-- 
GitLab