×

为电子墨水显示屏制作Hangman游戏

消耗积分:0 | 格式:zip | 大小:5.45 MB | 2023-02-13

李敏

分享资料个

描述

电子墨水显示器是非常好的显示器,因为长时间观看它们很舒服,而且耗电量很少。此外,即使关闭电源,它们也可以将内容保留在屏幕上。不幸的是刷新率很慢。我使用的电子墨水显示屏完全刷新大约需要 2 秒,部分刷新需要 0.3 秒。因此,如果我们想在电子墨水显示器上玩游戏,它应该是低刷新率的。这就是为什么在这个项目中我们为电子墨水显示屏制作了一个“Hangman”游戏。

这就是游戏的运作方式:

要猜测的单词由一行破折号表示,代表单词的每个字母。如果猜谜玩家建议出现在单词中的字母,则另一个玩家将其写在所有正确的位置。如果建议的字母没有出现在单词中,则另一个玩家绘制一个悬挂的简笔画元素。

猜词的玩家可以在任何时候尝试猜出整个词。如果单词正确,则游戏结束,猜者获胜。否则,其他玩家可以选择通过向图表添加元素来惩罚猜测者。另一方面,如果猜测者做出足够多的错误猜测以允许其他玩家完成图表,则猜测者输了。然而,猜测者也可以通过猜出单词中出现的所有字母从而在图表完成之前完成单词来获胜。

在我实现这个游戏时,不猜测的玩家是微控制器。所以用户总是只是在猜测这个词,而计算机会与他对抗。同样在这个版本中,在完全写下之前是不可能猜到这个词的。

hangman_stock_photo_KLLVb5sGVG.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
刽子手游戏的例子
 

首先,电子墨水屏需要连接到 ESP32。ESP32 板之间的接线可能不同。以下是 GxEPD2 库的示例草图中的几个示例:

// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
// mapping of Waveshare ESP32 Driver Board
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
//       see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
// for use with Board: "ESP32 Dev Module":

我有一个 NodeMCU ESP32,所以我按如下方式连接它(显示 --> ESP32):BUSY --> D4、RST --> RX2、DC --> TX2、CS --> D5、CLK --> D18、DIN --> D23,接地 --> 接地,VCC --> 3V3

img_4983_G13CWrw8UC.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
连接到 NodeMCU ESP32
 

作为玩家的输入,我在 ESP32 上使用了两个触摸针。我只是将 D15 (Touch3) 和 D13 (Touch4) 连接到一根电线上。如果触摸到电线的末端,ESP32 会将其识别为输入。

代码

要使代码正常工作,您需要安装 GxEPD2 库和 U8g2_for_Adafruit_GFX 库。您还需要有 Adafruit_GFX 库。您可能需要调整触摸传感器的灵敏度:

touchAttachInterrupt(T3, gotTouch2, 40); 
touchAttachInterrupt(T4, gotTouch1, 40);

您可以用更大或更小的数字替换“40”。数字越大,输入越敏感。

触摸输入 T4 用于循环字母表,触摸输入 T3 将字母设置为猜测。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !