浏览代码

Snake: Use a vegetable icon for the fruit.

Andreas Kling 6 年之前
父节点
当前提交
6ef8e2df5a
共有 3 个文件被更改,包括 10 次插入1 次删除
  1. 二进制
      Base/res/icons/snake/paprika.png
  2. 7 1
      Games/Snake/SnakeGame.cpp
  3. 3 0
      Games/Snake/SnakeGame.h

二进制
Base/res/icons/snake/paprika.png


+ 7 - 1
Games/Snake/SnakeGame.cpp

@@ -1,11 +1,13 @@
 #include "SnakeGame.h"
 #include <LibGUI/GPainter.h>
+#include <SharedGraphics/GraphicsBitmap.h>
 #include <stdlib.h>
 #include <time.h>
 
 SnakeGame::SnakeGame(GWidget* parent)
     : GWidget(parent)
 {
+    m_fruit_bitmap = GraphicsBitmap::load_from_file("/res/icons/snake/paprika.png");
     srand(time(nullptr));
     reset();
 }
@@ -19,6 +21,7 @@ void SnakeGame::reset()
     m_head = { m_rows / 2, m_columns / 2 };
     m_tail.clear_with_capacity();
     m_length = 2;
+    m_score = 0;
     m_velocity_queue.clear();
     stop_timer();
     start_timer(120);
@@ -83,6 +86,7 @@ void SnakeGame::timer_event(CTimerEvent&)
 
     if (m_head == m_fruit) {
         ++m_length;
+        ++m_score;
         spawn_fruit();
     }
     update();
@@ -141,7 +145,9 @@ void SnakeGame::paint_event(GPaintEvent& event)
     for (auto& coord : m_tail)
         painter.fill_rect(cell_rect(coord), Color::from_rgb(0xaaaa00));
 
-    painter.fill_rect(cell_rect(m_fruit), Color::Red);
+    painter.draw_scaled_bitmap(cell_rect(m_fruit), *m_fruit_bitmap, m_fruit_bitmap->rect());
+
+    painter.draw_text(rect(), String::format("Score: %u", m_score), TextAlignment::TopLeft, Color::White);
 }
 
 void SnakeGame::game_over()

+ 3 - 0
Games/Snake/SnakeGame.h

@@ -50,4 +50,7 @@ private:
     Coordinate m_fruit;
 
     int m_length { 0 };
+    unsigned m_score { 0 };
+
+    RetainPtr<GraphicsBitmap> m_fruit_bitmap;
 };