diff --git a/android/gradle.properties b/android/gradle.properties
index bc2d95e8567abcfd41c26ebeb95fced48f43e773..818e87b23b224ced309ae5c147e5ed827826e237 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.1
-app.versionCode=1
+app.versionName=0.0.2
+app.versionCode=2
diff --git a/fastlane/metadata/android/en-US/changelogs/2.txt b/fastlane/metadata/android/en-US/changelogs/2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..71488257d8ba1afdb81f2222b04d363a0c9ba58b
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/2.txt
@@ -0,0 +1 @@
+Add minimal "pick random tetrimino" feature
diff --git a/fastlane/metadata/android/fr-FR/changelogs/2.txt b/fastlane/metadata/android/fr-FR/changelogs/2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..48f5368799e2ce9661a0566cc070e6db1db904e2
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/2.txt
@@ -0,0 +1 @@
+Ajout du minimal "pioche un tetrimino au hasard"
diff --git a/lib/layout/board.dart b/lib/layout/board.dart
index aa3a86d8862034e00b93b6d47e60be4ea230ec3f..009bd5fabbb9d49901007c6e4475586c1da51629 100644
--- a/lib/layout/board.dart
+++ b/lib/layout/board.dart
@@ -1,6 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:tetrisdual/layout/board_painter.dart';
 import 'package:tetrisdual/provider/data.dart';
+import 'package:tetrisdual/utils/game_utils.dart';
 
 class Board {
   static Container buildGameBoard(Data myProvider, double boardWidth) {
@@ -13,9 +14,7 @@ class Board {
             child: Center(
               child: GestureDetector(
                 onTapUp: (details) {
-                  double xTap = details.localPosition.dx;
-                  double yTap = details.localPosition.dy;
-                  print('xTap: ' + xTap.toString() + ' / yTap: ' + yTap.toString());
+                  GameUtils.pickRandomTetrimino(myProvider);
                 },
                 child: Container(
                   child: CustomPaint(
diff --git a/lib/layout/board_painter.dart b/lib/layout/board_painter.dart
index 8d3d0bf290ce2ccd0479d26e0d9161eb9403c0c4..620de7c5c2c4f803a0d593b2467ff3401c382952 100644
--- a/lib/layout/board_painter.dart
+++ b/lib/layout/board_painter.dart
@@ -1,3 +1,5 @@
+import 'dart:math';
+
 import 'package:flutter/material.dart';
 import 'package:tetrisdual/provider/data.dart';
 
@@ -6,9 +8,118 @@ class BoardPainter extends CustomPainter {
 
   final Data myProvider;
 
+  void drawPixels(List<List<int>> pixels, Canvas canvas, double drawSize, Color pixelColor) {
+    int blockWidth = 1;
+    int blockHeight = 1;
+    pixels.forEach((pixel) {
+      int x = pixel[0] + 1;
+      int y = pixel[1] + 1;
+      if (x > blockWidth) {
+        blockWidth = x;
+      }
+      if (y > blockHeight) {
+        blockHeight = y;
+      }
+    });
+
+    double pixelSize = drawSize / (max(blockWidth, blockHeight) + 2);
+    double xOffset =
+        (blockHeight > blockWidth) ? (blockHeight - blockWidth) * pixelSize / 2 : 0;
+    double yOffset =
+        (blockWidth > blockHeight) ? (blockWidth - blockHeight) * pixelSize / 2 : 0;
+
+    // Fill background
+    final paintPixelBackground = Paint();
+    paintPixelBackground.color = pixelColor;
+    paintPixelBackground.style = PaintingStyle.fill;
+    pixels.forEach((pixel) {
+      int x = pixel[0];
+      int y = pixel[1];
+      final Rect pixelBackground = Rect.fromPoints(
+          Offset(xOffset + pixelSize * (x + 1), yOffset + pixelSize * (y + 1)),
+          Offset(xOffset + pixelSize * (x + 2), yOffset + pixelSize * (y + 2)));
+      canvas.drawRect(pixelBackground, paintPixelBackground);
+    });
+
+    // Border lines
+    final paintPixelBorder = Paint();
+    paintPixelBorder.color = Colors.white;
+    paintPixelBorder.style = PaintingStyle.stroke;
+    paintPixelBorder.strokeWidth = 4;
+    pixels.forEach((pixel) {
+      int x = pixel[0];
+      int y = pixel[1];
+      final Rect rectBackground = Rect.fromPoints(
+          Offset(xOffset + pixelSize * (x + 1), yOffset + pixelSize * (y + 1)),
+          Offset(xOffset + pixelSize * (x + 2), yOffset + pixelSize * (y + 2)));
+      canvas.drawRect(rectBackground, paintPixelBorder);
+    });
+  }
+
   @override
   void paint(Canvas canvas, Size size) {
-    print('paint');
+    double drawSize = min(size.width, size.height);
+
+    // Fill background
+    final paintBackground = Paint();
+    paintBackground.color = Colors.black;
+    paintBackground.style = PaintingStyle.fill;
+
+    final Rect rectBackground = Rect.fromPoints(Offset(0, 0), Offset(drawSize, drawSize));
+    canvas.drawRect(rectBackground, paintBackground);
+
+    // Add tetrimino
+    switch (myProvider.currentTetrimino) {
+      // empty
+      case 0:
+        break;
+      // straight
+      case 1:
+        drawPixels([
+          [0, 0],
+          [1, 0],
+          [2, 0],
+          [3, 0]
+        ], canvas, drawSize, Colors.cyan);
+        break;
+      // square
+      case 2:
+        drawPixels([
+          [0, 0],
+          [0, 1],
+          [1, 0],
+          [1, 1]
+        ], canvas, drawSize, Colors.amber);
+        break;
+      // T
+      case 3:
+        drawPixels([
+          [0, 0],
+          [1, 0],
+          [2, 0],
+          [1, 1]
+        ], canvas, drawSize, Colors.purple);
+        break;
+      // L
+      case 4:
+        drawPixels([
+          [0, 0],
+          [0, 1],
+          [0, 2],
+          [1, 2]
+        ], canvas, drawSize, Colors.deepOrange);
+        break;
+      // skew
+      case 5:
+        drawPixels([
+          [0, 0],
+          [0, 1],
+          [1, 1],
+          [1, 2]
+        ], canvas, drawSize, Colors.green);
+        break;
+      default:
+    }
   }
 
   @override
diff --git a/lib/layout/color_theme.dart b/lib/layout/color_theme.dart
deleted file mode 100644
index 27097af04a0e6f1c17d01f55cd8394ff16fa116d..0000000000000000000000000000000000000000
--- a/lib/layout/color_theme.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-class ColorTheme {
-  static Map<String, Map<String, int>> colors = {
-    'default': {
-      '0': 0xffffff,
-      '1': 0xff6f43,
-      '2': 0x708cfd,
-    },
-  };
-  static int defaultColor = 0x808080;
-
-  static int getColorCode(String skin, String value) {
-    if (colors.containsKey(skin) && null != colors[skin]) {
-      Map<String, int>? skinColors = colors[skin];
-      if (null != skinColors && skinColors.containsKey(value) && null != skinColors[value]) {
-        return (skinColors[value] ?? defaultColor) | 0xFF000000;
-      }
-    }
-    return defaultColor | 0xFF000000;
-  }
-}
diff --git a/lib/layout/game.dart b/lib/layout/game.dart
index cb742a295b8aa858650b680453f635cd4e8a3396..d46557140943a7742594cb5b708f278d55fbae12 100644
--- a/lib/layout/game.dart
+++ b/lib/layout/game.dart
@@ -33,36 +33,10 @@ class Game {
         TableRow(
           children: [
             Column(
-              children: [
-                Text(
-                  'X',
-                  style: TextStyle(
-                    fontSize: 40,
-                    fontWeight: FontWeight.w600,
-                    color: Colors.black,
-                  ),
-                ),
-                Text(
-                  'Y',
-                  style: TextStyle(
-                    fontSize: 15,
-                    fontWeight: FontWeight.w600,
-                    color: Colors.grey,
-                  ),
-                ),
-              ],
+              children: [],
             ),
             Column(
-              children: [
-                Text(
-                  'Z',
-                  style: TextStyle(
-                    fontSize: 20,
-                    fontWeight: FontWeight.w600,
-                    color: Colors.green,
-                  ),
-                ),
-              ],
+              children: [],
             ),
           ],
         ),
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 0b6fa19f8a5db2b9e2b1af9e98483049211686bb..8d0d68858bf76d56e7617584f96b95ff0e1cf78a 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -32,6 +32,7 @@ class Data extends ChangeNotifier {
   // Game data
   bool _gameIsRunning = false;
   bool _gameIsFinished = false;
+  int _currentTetrimino = 0;
 
   bool get isGameRunning => _gameIsRunning;
   void updateGameIsRunning(bool gameIsRunning) {
@@ -45,6 +46,12 @@ class Data extends ChangeNotifier {
     notifyListeners();
   }
 
+  int get currentTetrimino => _currentTetrimino;
+  void updateCurrentTetrimino(int currentTetrimino) {
+    _currentTetrimino = currentTetrimino;
+    notifyListeners();
+  }
+
   void resetGame() {
     _gameIsRunning = false;
     _gameIsFinished = false;
diff --git a/lib/utils/game_utils.dart b/lib/utils/game_utils.dart
index 8796da9ced6997a04814e571ca7ce2b7e648be5d..86fcd8ae35cfde461553599f94466ff58462d055 100644
--- a/lib/utils/game_utils.dart
+++ b/lib/utils/game_utils.dart
@@ -1,3 +1,5 @@
+import 'dart:math';
+
 import 'package:tetrisdual/provider/data.dart';
 
 class GameUtils {
@@ -11,4 +13,12 @@ class GameUtils {
     myProvider.resetGame();
     myProvider.updateGameIsRunning(true);
   }
+
+  static void pickRandomTetrimino(Data myProvider) {
+    int newTetrimino = myProvider.currentTetrimino;
+    while (newTetrimino == myProvider.currentTetrimino) {
+      newTetrimino = Random().nextInt(5) + 1;
+    }
+    myProvider.updateCurrentTetrimino(newTetrimino);
+  }
 }