0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言+easyX带你实现:扫雷游戏(六边形升级版)!

C语言编程学习基地 来源:C语言编程学习基地 2023-03-16 15:57 次阅读

每天一个编程小项目,提升你的编程能力!

程序简介

扫雷游戏升级版!六边形扫雷(寻宝模式)稍稍介绍一下哈~

他也是要把所有安全的地方点出来。

他没有扫雷模式的消零算法。每一个安全的点都需要单独挖出来,一次显示一个格子。

添加了生命值的概念,也就是说存在一定的容错。

显示的数字有别于扫雷模式。点击宝藏点,会显示周围宝藏点数量,绿色;点击地雷,会显示周围地雷数量,黑色。注意,这个数字不包括自己,显示的范围自然就是 0~6 了。点击地雷会减生命值,生命值归零则结束。

所以雷和宝藏都是有价值的,都是能给准确信息的。

我能给一个参考难度:占总格子数 40%的地雷,占总地雷数 50 %的生命值。

【注:需要编译器+图形库插件可以在文末领取】

程序运行展示

c24466ac-c3c4-11ed-bfe3-dac502259ad0.jpg

简单了解游戏后我们就来试试吧!(直接上源码,大家可以看注释)

////////////////////////////////////////
// 程序:六边形扫雷:寻宝模式


# include 
# include 
# include 
# include 


static double pi = acos (-1.0);      // 圆周率 π
static HWND hOut;            // 画布


// 定义一个结构体,按钮
struct Node1
{
  int posx1, posy1, posx2, posy2;    // 坐标
  LPTSTR text;            // 文字
  int mod;              // 状态
};


// 定义一个结构体,六边形格子
struct Node2
{
  int i, j, k;            // 特征值
  int mod_life;            // 翻开
  int mod_mine;            // 雷
  int mod_flag;            // 标记
  int posx, posy;            // 坐标
  int num_mine;            // 周围雷数
  int num_peace;            // 周围空地块
};


// 定义一个类
class Gary
{
public:
  void carry ();            // 主进程
  void initialization ();        // 初始化
  void draw_scene ();          // 绘制界面函数
  void draw_box (int num_box);    // 绘制格子
  void draw_flag (int num_box);    // 绘制标记
  void draw_num (int num_box, int num);  // 绘制数字
  void move ();            // 窗口主视角
  void create ();            // 地雷生成
  void check_over ();          // 结束判定


  int num_button;            // 按钮数量参数
  int exit_carry;            // 主循函数控制参数
  int exit_move;            // 开始界面控制参数
  int exit_game;            // 游戏进行控制参数
  int num_life;            // 生命值
  int num_size;            // 边长
  int num_mine;            // 总雷数
  int num_box;            // 总地块数
  int num_flag;            // 标记数
  COLORREF color_text[2];        // 按钮绘制填充
  Node1 boxm[30];            // 按钮,预制 30 个
  Node2 box[1000];          // 地块
};


// 标记绘制函数
void Gary::draw_flag (int num_box)
{
  setlinestyle (PS_SOLID, 1);
  setlinecolor (BLACK);
  line (box[num_box].posx + 2, box[num_box].posy + 7, box[num_box].posx + 2, box[num_box].posy - 7);
  setfillcolor (LIGHTRED);
  setlinecolor (LIGHTRED);
  fillrectangle (box[num_box].posx - 7 + 2, box[num_box].posy - 7, box[num_box].posx + 2, box[num_box].posy - 1);
}


// 数字绘制函数
void Gary::draw_num (int num_box, int num)
{
  int i;
  // 画六边形,格子处于点击后状态
  setfillcolor (RGB (170, 170, 170));
  setlinecolor (RGB (85, 85, 85));
  POINT pts[6];
  setlinestyle (PS_SOLID, 1);
  for (i = 0; i < 6; i++)
  {
    pts[i].x = long(box[num_box].posx + 14.0 * cos (60.0 * double (i) * pi / 180.0));
    pts[i].y = long(box[num_box].posy + 14.0 * sin (60.0 * double (i) * pi / 180.0));
  }
  fillpolygon (pts, 6);


  // 数字绘制
  TCHAR s[15];
  settextstyle (20, 0, _T ("Consolas"));
  _stprintf_s (s, _T ("%0.1d"), num);
  outtextxy (box[num_box].posx - 5, box[num_box].posy - 10, s);
}


// 场景绘制函数
void Gary::draw_scene ()
{
  TCHAR s[15];
  int i, j;
  setlinecolor (BLACK);
  setfillcolor (WHITE);
  setlinestyle (PS_SOLID, 1);
  // 主界面
  fillrectangle (401, 0, 650, 400);
  // 根据按钮数量绘制  
  settextcolor (BLACK);
  for (i = 0; i < num_button; i++)
  {
    setfillcolor (color_text[boxm[i].mod]);
    setbkcolor (color_text[boxm[i].mod]);
    // 边框
    fillrectangle (boxm[i].posx1, boxm[i].posy1, boxm[i].posx2, boxm[i].posy2);
    // 文字
    outtextxy (boxm[i].posx1 + (boxm[i].posx2 - boxm[i].posx1) / 2 - textwidth (boxm[i].text) / 2, boxm[i].posy1 + 4, boxm[i].text);
  }


  // 设置参数
  setbkcolor (WHITE);
  settextcolor (BLACK);
  setlinecolor (BLACK);


  // 变量绘制
  j = 25;
  // 生命值
  i = 1;
  setbkcolor (color_text[boxm[i].mod]);
  _stprintf_s (s, _T ("%0.1d"), num_life);
  outtextxy (boxm[i].posx1 + (boxm[i].posx2 - boxm[i].posx1) / 2 - textwidth (boxm[i].text) / 2, boxm[i].posy1 + j, s);
  // 边长
  i = 2;
  setbkcolor (color_text[boxm[i].mod]);
  _stprintf_s (s, _T ("%0.1d"), num_size);
  outtextxy (boxm[i].posx1 + (boxm[i].posx2 - boxm[i].posx1) / 2 - textwidth (boxm[i].text) / 2, boxm[i].posy1 + j, s);
  // 总地雷数
  i = 3;
  setbkcolor (color_text[boxm[i].mod]);
  _stprintf_s (s, _T ("%0.1d"), num_mine);
  outtextxy (boxm[i].posx1 + (boxm[i].posx2 - boxm[i].posx1) / 2 - textwidth (boxm[i].text) / 2, boxm[i].posy1 + j, s);
  // 格子
  i = 4;
  setbkcolor (color_text[boxm[i].mod]);
  _stprintf_s (s, _T ("%0.1d"), num_box);
  outtextxy (boxm[i].posx1 + (boxm[i].posx2 - boxm[i].posx1) / 2 - textwidth (boxm[i].text) / 2, boxm[i].posy1 + j, s);
  // 标记数
  i = 5;
  setbkcolor (color_text[boxm[i].mod]);
  _stprintf_s (s, _T ("%0.1d"), num_flag);
  outtextxy (boxm[i].posx1 + (boxm[i].posx2 - boxm[i].posx1) / 2 - textwidth (boxm[i].text) / 2, boxm[i].posy1 + j, s);


  FlushBatchDraw ();
}


// 地雷生成函数
void Gary::create ()
{
  int i, j;
  // 设置雷
  for (i = 0; i < num_mine; i++)
  {
    // 随机
    j = rand () % 1000;
    while (box[j].mod_mine == 1 || box[j].mod_life == 1)
    {
      // 随机
      j = rand () % 1000;
    }
    // 是雷
    box[j].mod_mine = 1;
  }
  // 周边雷数统计
  // 遍历
  for (i = 0; i <= 888; i++)
  {
    if (box[i].mod_life == 0)
    {
      // 遍历
      for (j = 0; j <= 999; j++)
      {
        // 排除自己
        if (j != i && box[j].mod_life == 0)
        {
          // 周围六个
          if ((box[j].posx - box[i].posx) * (box[j].posx - box[i].posx) + (box[j].posy - box[i].posy) * (box[j].posy - box[i].posy) <= 900)
          {
            // 是雷
            if (box[j].mod_mine == 1)
            {
              // 周边雷数参数加一
              box[i].num_mine++;
            }
            // 不是雷
            else if (box[j].mod_mine == 0)
            {
              // 周边安全数参数加一
              box[i].num_peace++;
            }
          }
        }
      }
    }
  }
}


// 结束判断函数
void Gary::check_over ()
{
  int i, k;
  k = 0;
  for (i = 0; i <= 888; i++)
  {
    // 每有一个翻开且不是雷的点,则加一
    if (box[i].mod_mine == 0 && box[i].mod_life == 1)
    {
      k++;
    }
  }
  // 全翻开则结束
  if (k == num_box - num_mine)
  {
    // 将所有未翻开雷做上标记
    for (i = 0; i <= 888; i++)
    {
      if (box[i].mod_mine == 1 && box[i].mod_life == 0)
      {
        draw_flag (i);
      }
    }
    // 胜利标志:笑脸
    setfillcolor (WHITE);
    setlinecolor (WHITE);
    fillrectangle (50, 20, 75, 45);
    settextstyle (30, 0, _T ("Wingdings"));
    setbkmode (TRANSPARENT);
    settextcolor (BLACK);
    outtextxy (50, 20, 0x4A);
    setbkmode (OPAQUE);
    settextstyle (20, 0, _T ("Consolas"));
    // 结束变化
    exit_game = 1;
    boxm[1].mod = 0;
    boxm[2].mod = 0;
    boxm[3].mod = 0;
    boxm[6].mod = 0;
    boxm[7].mod = 1;
    num_flag = 0;
    // 绘制
    draw_scene ();
  }
}


// 格子绘制函数
void Gary::draw_box (int num_box)
{
  int i;
  int posx, posy;


  // 六边形绘制
  posx = box[num_box].posx;
  posy = box[num_box].posy;


  POINT pts[6];
  setlinestyle (PS_SOLID, 2);
  // 背景色
  setfillcolor (RGB (255, 255, 255));
  for (i = 0; i < 6; i++)
  {
    pts[i].x = long(posx + 14.0 * cos (60.0 * double (i) * pi / 180.0));
    pts[i].y = long(posy + 14.0 * sin (60.0 * double (i) * pi / 180.0));
  }
  solidpolygon (pts, 6);
  // 灰边
  setlinecolor (RGB (85, 85, 85));
  line (pts[0].x, pts[0].y, pts[1].x, pts[1].y);
  line (pts[5].x, pts[5].y, pts[0].x, pts[0].y);
  line (pts[1].x, pts[1].y, pts[2].x, pts[2].y);
  // 前景色
  setfillcolor (RGB (170, 170, 170));
  for (i = 0; i < 6; i++)
  {
    pts[i].x = long(posx + 12.0 * cos (60.0 * double (i) * pi / 180.0));
    pts[i].y = long(posy + 12.0 * sin (60.0 * double (i) * pi / 180.0));
  }
  solidpolygon (pts, 6);
  FlushBatchDraw ();
}


// 初始化函数
void Gary::initialization ()
{
  int i, j, k, t;
  // 随机初始化
  srand ((unsigned)time (NULL));
  // 颜色初始化
  color_text[0] = WHITE;
  color_text[1] = RGB (170, 170, 170);


  // 按钮的初始化
  num_button = 10;


  // 坐标
  for (i = 0; i < 10; i++)
  {
    boxm[i].posx1 = 410 + 120 * (i % 2);
    boxm[i].posy1 = 25 + 75 * (i / 2);
    boxm[i].posx2 = 520 + 120 * (i % 2);
    boxm[i].posy2 = 75 + 75 * (i / 2);
  }


  // 内容
  boxm[0].text = _T ("寻宝模式");  boxm[1].text = _T ("生命值");
  boxm[2].text = _T ("地图边长");  boxm[3].text = _T ("总地雷数");
  boxm[4].text = _T ("总地块数");  boxm[5].text = _T ("已标记数");
  boxm[6].text = _T ("开始");    boxm[7].text = _T ("重置");
  boxm[8].text = _T ("截图");    boxm[9].text = _T ("退出");


  // 状态
  boxm[0].mod = 1;
  boxm[1].mod = 1;
  boxm[2].mod = 1;
  boxm[3].mod = 1;
  boxm[4].mod = 1;
  boxm[5].mod = 1;
  boxm[6].mod = 1;
  boxm[7].mod = 0;
  boxm[8].mod = 0;
  boxm[9].mod = 0;


  num_box = 3 * num_size * (num_size - 1) + 1;
  num_flag = 0;


  // 绘制参数初始化
  setlinecolor (BLACK);
  setlinestyle (PS_SOLID, 1);
  settextstyle (20, 0, _T ("Consolas"));
  // 第一次绘制
  draw_scene ();


  // 重置
  setfillcolor (WHITE);
  fillrectangle (0, 0, 400, 400);


  // 平静脸
  setfillcolor (WHITE);
  setlinecolor (WHITE);
  fillrectangle (50, 20, 75, 45);
  settextstyle (30, 0, _T ("Wingdings"));
  setbkmode (TRANSPARENT);
  settextcolor (BLACK);
  outtextxy (50, 20, 0x4B);
  setbkmode (OPAQUE);
  settextstyle (20, 0, _T ("Consolas"));


  // 格子初始化
  for (t = 0; t <= 999; t++)
  {
    // 已翻开
    box[t].mod_life = 1;
    // 城墙
    box[t].mod_mine = 2;
    // 坐标,点不到
    box[t].posx = -200;
    box[t].posy = -200;
  }


  // 初始化
  for (i = 0; i < num_size; i++)
  {
    for (j = 0; j < num_size; j++)
    {
      for (k = 0; k < num_size; k++)
      {
        // 特征值至少一个为零
        if (i == 0 || j == 0 || k == 0)
        {
          // 编号
          t = i * 100 + j * 10 + k;
          // 特征值
          box[t].i = i;
          box[t].j = j;
          box[t].k = k;
          // 未翻开
          box[t].mod_life = 0;
          // 不是雷
          box[t].mod_mine = 0;
          // 未标记
          box[t].mod_flag = 0;
          // 坐标
          box[t].posx = 200 + 22 * (j - k);
          box[t].posy = 200 - 25 * i + 13 * (j + k);
          // 周围雷数初始化
          box[t].num_mine = 0;
          box[t].num_peace = 0;
          // 绘制地块
          draw_box (t);
        }
      }
    }
  }
  // 地雷生成函数
  create ();
}


// 窗口主视角函数,获取用户操作
void Gary::move ()
{
  // 鼠标定义
  ExMessage m;
  TCHAR ss[15];
  int i, t;
  exit_move = 0;
  exit_game = 0;
  while (exit_move == 0)
  {
    // 鼠标信息
    if (peekmessage (&m, EM_MOUSE | EM_KEY))
    {
      // 左键单击判断
      if (m.message == WM_LBUTTONDOWN)
      {
        // 判断是否点击了格子
        if (m.x > 0 && m.y > 0 && m.x < 400 && m.y < 400 && exit_game == 0)
        {
          for (t = 0; t <= 888; t++)
          {
            // 成功点击未标记的空格子
            if ((m.x - box[t].posx) * (m.x - box[t].posx) + (m.y - box[t].posy) * (m.y - box[t].posy) <= 144 && box[t].mod_life == 0 && box[t].mod_flag == 0)
            {
              // 点击的格子不是雷
              if (box[t].mod_mine == 0)
              {
                // 绿色,安全,绘制
                settextcolor (LIGHTGREEN);
                draw_num (t, box[t].num_peace);
                // 改为翻开
                box[t].mod_life = 1;
              }
              // 点击的格子雷
              else if (box[t].mod_mine == 1)
              {
                // 扣除生命值
                num_life--;
                // 黑色,危险,绘制
                settextcolor (BLACK);
                draw_num (t, box[t].num_mine);
                // 改为翻开
                box[t].mod_life = 1;
                // 生命值减为零
                if (num_life <= 0)
                {
                  // 失败标志:哭脸
                  setfillcolor (WHITE);
                  setlinecolor (WHITE);
                  fillrectangle (50, 20, 75, 45);
                  settextstyle (30, 0, _T ("Wingdings"));
                  setbkmode (TRANSPARENT);
                  settextcolor (BLACK);
                  outtextxy (50, 20, 0x4C);
                  setbkmode (OPAQUE);
                  settextstyle (20, 0, _T ("Consolas"));
                  // 失败
                  exit_game = 1;
                  boxm[1].mod = 0;
                  boxm[2].mod = 0;
                  boxm[3].mod = 0;
                  boxm[6].mod = 0;
                  boxm[7].mod = 1;
                  num_flag = 0;
                }
                // 绘制
                draw_scene ();
              }
              // 成功结束判断
              check_over ();
              break;
            }
          }
        }


        // 判断是否点击了可点击按钮
        for (i = 0; i < num_button; i++)
        {
          if (m.x > boxm[i].posx1 && m.y > boxm[i].posy1 && m.x < boxm[i].posx2 && m.y < boxm[i].posy2 && boxm[i].mod == 0)
          {
            break;
          }
        }


        // 点击矩形按钮
        switch (i)
        {
        // 生命值:num_life
        case 1:
        {
          // 输入
          InputBox (ss, 10, _T ("输入生命值(1 ~ 999)"));
          _stscanf_s (ss, _T ("%d"), &i);
          if (i > 0 && i <= 999)
          {
            num_life = i;
          }
          else { MessageBox (hOut, _T ("输入错误,不在范围内"), _T ("来自小豆子的提醒"), MB_OK); }
          // 绘制
          draw_scene ();
          break;
        }
        // 地图边长:num_size
        case 2:
        {
          // 输入
          InputBox (ss, 10, _T ("输入边长(2 ~ 8)"));
          _stscanf_s (ss, _T ("%d"), &i);
          if (i > 1 && i <= 8)
          {
            num_size = i;
            num_box = 3 * num_size * (num_size - 1) + 1;
          }
          else { MessageBox (hOut, _T ("输入错误,不在范围内"), _T ("来自小豆子的提醒"), MB_OK); }
          // 绘制
          draw_scene ();
          break;
        }
        // 总地雷数:num_mine
        case 3:
        {
          InputBox (ss, 10, _T ("输入地雷数(1 ~ 总格子数)"));
          _stscanf_s (ss, _T ("%d"), &i);
          if (i > 0 && i < num_box)
          {
            num_mine = i;
          }
          else { MessageBox (hOut, _T ("输入错误,不在范围内"), _T ("来自小豆子的提醒"), MB_OK); }
          // 绘制
          draw_scene ();
          break;
        }
        // 开始
        case 6:
        {
          num_box = 3 * num_size * (num_size - 1) + 1;
          if (num_mine < num_box && num_life > 0)
          {
            exit_game = 0;
            // 初始化
            initialization ();
          }
          else
          {
            MessageBox (hOut, _T ("请将雷数修改为小于格子数或将生命值修改为大于零"), _T ("来自小豆子的提醒"), MB_OK);
          }
          break;
        }
        // 重置
        case 7:
        {
          // 结束游戏进程,进入准备阶段
          if (exit_game == 0)
          {
            exit_game = 1;
            boxm[1].mod = 0;
            boxm[2].mod = 0;
            boxm[3].mod = 0;
            boxm[6].mod = 0;
            boxm[7].mod = 1;
            num_flag = 0;
            // 绘制
            draw_scene ();
          }
          break;
        }
        // 截图
        case 8:
        {
          saveimage (_T ("image.png"));
          break;
        }
        // 退出
        case 9:
        {
          exit_game = 1;
          exit_move = 1;
          exit_carry = 1;
          break;
        }
        default:break;
        }
      }
      // 右键,且处于游戏进行状态
      else if (m.message == WM_RBUTTONDOWN && exit_game == 0)
      {
        for (t = 0; t <= 888; t++)
        {
          // 成功点击空格子
          if ((m.x - box[t].posx) * (m.x - box[t].posx) + (m.y - box[t].posy) * (m.y - box[t].posy) <= 144 && box[t].mod_life == 0)
          {
            // 标记状态转换
            box[t].mod_flag = (box[t].mod_flag == 0 ? 1 : 0);
            // 绘制
            draw_box (t);
            // 画小旗子
            if (box[t].mod_flag == 1)
            {
              draw_flag (t);
              num_flag++;
            }
            else
            {
              num_flag--;
            }
            // 绘制
            draw_scene ();
          }
        }
      }
    }
  }
}


// 主进程
void Gary::carry ()
{
  // 窗口定义
  hOut = initgraph (651, 401);
  SetWindowText (hOut, _T ("六边形扫雷:扫雷模式"));
  // 参数初始化
  num_size = 5;
  num_mine = 10;
  num_life = 3;
  // 背景绘制
  setbkcolor (WHITE);
  cleardevice ();
  // 进程控制
  exit_carry = 0;
  while (exit_carry == 0)
  {
    initialization ();
    move ();
  }
  closegraph ();
}


// 主函数
int main (void)
{
  Gary G;
  G.carry ();
  return 0;
}





大家赶紧去动手试试吧!

审核编辑:汤梓红

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

    关注

    2

    文章

    742

    浏览量

    26313
  • 编程
    +关注

    关注

    88

    文章

    3614

    浏览量

    93692
  • 程序
    +关注

    关注

    117

    文章

    3785

    浏览量

    81006
  • 编译器
    +关注

    关注

    1

    文章

    1624

    浏览量

    49109

原文标题:【项目实战】C语言+easyX带你实现:扫雷游戏(六边形升级版)!

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RPP「六边形战士」处理器:融合NPU与GPU优势,兼具高效与实时性的AI新星

    进入其他市场领域发展。然而,在这个竞争激烈的市场中,有一款处理器被誉为“六边形战士处理器”,它就是RPP,凭借其独特的底层架构, RPP成功实现了NPU的高效率和GPU的高通用性相结合,在AI市场中游刃有余,成为了AI领域的后起之秀。 这种 结合令
    的头像 发表于 08-31 13:38 1096次阅读
    RPP「<b class='flag-5'>六边形</b>战士」处理器:融合NPU与GPU优势,兼具高效与实时性的AI新星

    四芯轴压接PK六边形压接:大家觉得传统六边形压接和四芯轴压接方式哪个比较好呢?

    `现在民用产品对可靠性要求越来越高,所以四芯轴压接威廉希尔官方网站 逐步被应用到民用产品。性能上来说,四芯轴抗冷热冲击性能远远好于六边形,因为端子和导线材质不同导致热胀冷缩比不同,自锁能力大的压接方式寿命远远
    发表于 03-27 15:05

    请问PADS logic页面连接符图中的六边形是什么符号?

    图中的六边形是什么符号?PADS中怎么输出对应符号?应该是页面连接符双向的意思 可就是不知道输出该符号
    发表于 06-19 04:36

    浅析开关电源半六边形法则

    开关电源半六边形法则
    发表于 10-28 06:47

    新型有序分布正六边形小区结构的设计

    分布式通信系统可以抑制干扰,增大容量。为了在现有的系统中引入分布式处理的增益,该文提出了有序分布的正六边形小区通信系统。该系统可兼容现有的120o 定向天线覆盖的蜂窝
    发表于 11-18 13:39 9次下载

    一种改进的六角形细分方法

    研究了六角形网格上的曲面细分算法,改进了六角形网格砍细分算法。在六边形网格的砍细分过程中,利用对偶砍角法对非
    发表于 01-15 16:22 6次下载

    一种基于正六边形网格的LEACH协议改进

    一种基于正六边形网格的LEACH协议改进_严斌亨
    发表于 01-07 20:32 0次下载

    基于正六边形DGS单元的微带低通滤波器设计方案

    本文采用正六边形缺陷地面结构单元设计了一款新颖的微带低通滤波器, 并提出了该滤波器的原型RLC等效电路。通过对其S参数的仿真分析提取出了相应的等效电路元件值。设计了一款由五个正六边形缺陷地面结构单元
    发表于 11-09 16:55 6次下载

    六边形元胞自动机的行人疏散

    在分析、比较现有疏散仿真模型的基础上,提出一种基于正六边形元胞自动机的行人疏散模型。该模型中疏散空间被分成相等的正六边形,每个行人有包括静止在内的7个运动方向。给出速度等级的概念用来描述行人的疏散
    发表于 01-31 16:02 0次下载
    正<b class='flag-5'>六边形</b>元胞自动机的行人疏散

    六边形LED灯的制作

     由于在某些布局中设计了这种形状,六边形在任何时候都可以有多个输入。..。..基本上这对于LED是不好的。我最好的解决方案是一个简单的Attiny85电路,它读取每个输入并打开或关闭晶体管,基本上打开和关闭晶体管,只为下一个LED条带留下一个信号。
    的头像 发表于 08-23 09:27 6358次阅读
    <b class='flag-5'>六边形</b>LED灯的制作

    六边形硅有望超过金刚石硅的新型晶体硅

    美国科学家在最新一期《物理学评论快报》杂志撰文指出,他们开发了一种新方法,合成出了一种拥有六边形结构的新型晶型硅,这种晶型硅有可能被用于制造新一代电子和能源器件,这些新设备的性能将超过现有“普通
    的头像 发表于 06-17 17:56 2092次阅读

    堪称六边形战士的aigo国民好物移动固态硬盘S7 Pro表现如何?

    堪称六边形战士的aigo国民好物移动固态硬盘S7 Pro表现如何? 在很多人的印象当中,都认为硬盘是一种比较厚重的储存设备。放在以往硬盘确实比较厚重,但是随着科学威廉希尔官方网站 的不断发展,硬盘也随之进行了升级
    的头像 发表于 08-13 11:03 1012次阅读
    堪称<b class='flag-5'>六边形</b>战士的aigo国民好物移动固态硬盘S7 Pro表现如何?

    开关电源半六边形法则

    开关电源半六边形法则
    发表于 10-21 19:35 10次下载
    开关电源半<b class='flag-5'>六边形</b>法则

    压线钳四边形六边形的特征、性质以及应用

    在几何学中,四边形六边形是两个常见的多边形状。它们在不同的方面具有不同的特点和用途。本文将比较压线钳四边形六边形的特征、性质以及应用,
    的头像 发表于 12-28 17:05 5976次阅读

    六边形压接 VS B型压接

    在柔性电缆的线束制造过程中,选择适当的压接方法至关重要,因为它直接关系到连接的可靠性和性能。六边形压接和B型压接是两种常用的压接威廉希尔官方网站 ,但它们各有特点,适用于不同的应用需求。在压接连接和刚性电缆情况下
    的头像 发表于 05-16 08:26 952次阅读
    <b class='flag-5'>六边形</b>压接 VS B型压接