×

Arduino扫雷游戏开源分享

消耗积分:0 | 格式:zip | 大小:0.08 MB | 2022-11-10

王丽

分享资料个

描述

我们都喜欢那种怀念童年和青春期玩过的游戏的感觉。几个游戏机和电脑游戏标志着这个时代。伟大的游戏之一是 Windows 操作系统的扫雷,如图 1 所示。

在这个游戏中,我们的目标是选择一个没有炸弹的位置。否则,我们输掉了比赛。

因此,我们在考虑这款游戏的概念时,我们创建了这个项目,目的是带回一款众所周知的游戏:雷区。

poYBAGNsWT-AZeMkAABus0_cjl0079.jpg
图 1 - Windows 操作系统的扫雷。
 

我们的项目包括一个简单的游戏,具有出色的动态,可以选择由两个人玩。

你的主要目标是选择一个没有炸弹的空方格。如果有炸弹,游戏就结束了。否则,游戏继续。基于此,每个位置将由连接到 Arduino 的按钮表示。

因此,在本文中,您将学习以下概念:

1. 为Arduino开发雷区游戏;

2.学习使用random和randomseed函数。

所以,接下来,我们将开始与Arduino一起开发雷区游戏,让您与朋友一起玩得开心。

使用 Arduino 开发扫雷游戏

基于此工作原理,开发了图 1 中的以下电路。

pYYBAGNsWUeAKCR9AARyP2jRT9Q610.jpg
图 2 - 面包板中的电子原理图。
 

如我们所见,该电路由负责处理游戏逻辑的 Arduino UNO、模拟位置的按钮以及 LED 和蜂鸣器组成,通过灯光和声音信号指示游戏中的胜负.

从现在开始,我们将介绍电路的操作和电路中实现的逻辑。

Arduino扫雷

游戏的主要目标是找到一个没有炸弹的空地。否则,如果用户按下泵所在的按钮,系统将产生用户输掉游戏的警报信号。

为此,我们将使用按钮来模拟每个正方形。我们将使用编程逻辑来绘制其中一个按钮的数字引脚号。抽奖后,地雷将分配给相应的按钮。

这样,我们现在将展示开发项目的代码。

代码如下所示。

int numero;
int estado;
int buzzer = 2;

void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
randomSeed(analogRead(A0));
numero = random(8,14);
}

void loop()
{
digitalWrite(3, HIGH);
estado = digitalRead(numero);
while(estado == 1)
{
digitalWrite(4, HIGH);
tone(buzzer,1500);
delay(100);
digitalWrite(3, LOW);
noTone(buzzer);
digitalWrite(4, LOW);
tone(buzzer,1500);
delay(100);
digitalWrite(3, HIGH);
noTone(buzzer);
delay(100);
while(estado == 0)
{
estado = 1;
}
}
}

如您所见,首先为连接到按钮的数字引脚声明了一个变量。此外,我们将创建一个变量来检查这些按钮的状态,即它们是处于高逻辑状态还是低逻辑状态。

最后,我们为蜂鸣器声明一个变量,并为该变量分配一个数字端口。

int numero; // Variável referente aos pinos digitais conectados aos botões //
int estado; // Variável para verificar o estado dos botôes, se estão em nivel lógico alto ou baixo. //
int buzzer = 2; // Váriavel atribuida ao pino digital 7, referente ao buzzer.//

接下来,我们有设置功能。在此函数中,我们将用于连接按钮的 I/O 引脚配置为输入,将 LED 和蜂鸣器引脚配置为输出。

此外,我们使用 randomSeed 函数。此函数使用在断开的模拟输入上读取的值作为参数来生成种子值。因为众所周知,断开的模拟引脚会生成随机值,因此,我们对代码中生成的值产生了真正的随机影响。

除了 randomseed 函数,我们还使用 random 函数。此函数从内部 Arduino 预先建立的列表中返回数字。这是一个巨大的乱码列表,并且总是相同的数字序列,实际上它不是随机数。

当我们重新启动 Arduino 时,它会再次启动此序列。

对于这个项目,我们抽奖了一个 8-14 范围内的数字。选择这些值是因为它们是连接到 Arduino 上的按钮的数字引脚的值。

void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(buzzer,OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
randomSeed(analogRead(A0));
numero = random(8,14);
}

最后,我们有循环功能。开始时,绿色 LED 被激活,表示游戏已经开始,玩家可以开始游戏。然后,用户必须选择一个按键,如下面的电路所示。

pYYBAGNsWUqAMOV1AAI1yAvUnlM372.jpg
图 3 - 开始扫雷游戏。
 

When a selected switch does not have the pump in place, the green LED will remain on and the red LED will remain off. 此外,蜂鸣器不会被触发。这可以在下图中看到。

pYYBAGNsWVGAYxyBAAJAvkg_vw8321.jpg
图 4 - 开始扫雷游戏。
 

如果用户选择了一个位置并有一个泵,红色 LED 将亮起,绿色 LED 将熄灭,蜂鸣器将继续响起。这可以在下图中看到。

poYBAGNsWVeAawu5AAJn08JgQ_8847.jpg
图 5 - 放置炸弹。
 

最后,我们包括一个重置按钮,用于在泵启动时重新启动游戏。按下按钮后,游戏重新开始,红色 LED 熄灭,绿色 LED 亮起。

然后绘制另一个随机图钉,您的乐趣将继续。这可以在图 5 中看到。

 
 
 
pYYBAGNsWVuAZVjpAAHlxG5sZ0g406.jpg
 
1 / 2图6 - 重新开始游戏。
 

接下来,我们将为您提供文件,以便在NEXTPCB 印刷电路板上安装此项目您可以免费使用和购买。

印刷电路板 NEXTPCB - Arduino Minesweeper

对于这个项目,我们决定为 Arduino UNO 创建一个 Shield 在此板上,将连接 JST 以连接按钮、LED 和蜂鸣器。

通过这种方式,我们为该项目开发了电子原理图设计。示意图如下图所示。

pYYBAGNsWWCAYpSoAAD7wj9qgJ8943.png
图 7 - 项目的电子原理图。
 

下图的原理图是从电子原理图中获得的。如您所见,我们放置了 10 个 JST 连接器来连接项目的元素。

poYBAGNsWWOAbp0nAACTrZ6GEAc990.png
图 8 - 2D PCB 设计。
 

您现在可以在 3D 视图中看到印刷电路板项目的结果。

poYBAGNsWWaAAZoSAABdHIryKJc626.png
图 9 - 3D PCB 设计。
 

使用您的NEXTPCB 盾牌 Arduino 扫雷器,您可以设置您的项目并与您的朋友一起玩乐。

结论

通过这个游戏的开发,我们学会了如何使用Arduino的几个功能中的一个,以及如何创建一个互动项目,让人们玩得开心。

这个项目很简单,可以在家中与父母和孩子一起设置,也可以在学校设置。

为了让您的乐趣更加完整,我们已经发布了所有文件,您可以通过此链接获得您的 PCB 单元来设置此项目。

我们感谢低成本印刷电路板 - NEXTPCB 公司的支持,并关注我们的个人资料以接收新的有趣项目。


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

评论(0)
发评论

下载排行榜

全部0条评论

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