极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13859|回复: 4

12864+Arduino自制小游戏半成品

[复制链接]
发表于 2015-2-7 22:08:59 | 显示全部楼层 |阅读模式


兴起买了一块屏幕 一直沉睡者不知道做什么用,周四突然想搞个游戏试试?游戏过程就是简单的就是跳过障碍。希望大手给予指导。

样子就是视频里那样了,现在的问题是不知道怎么判断和障碍撞上了,是判断人物和障碍物的坐标吗?

还有就是我按下按钮如果不松开,人物就不会掉下来,不掉下来就不能判断游戏失败啊。。。。求解。还有程序不知道算是个

显示程序还是算是个游戏程序,总觉得哪里不对。。。{:soso_e144:}


不会在程序里添加中文,装插件太麻烦了,对程序做几点解释吧:

drawtre就是屏幕中过往的树也就是障碍物,

drawpeople就是游戏主人公了,请自动脑补人物形象 这里已一条竖线代替。

drawpeoplejump,jump2,jump3是想做一个人物跳起并落下的动画,结果很不是理想。。。


u8g.drawLine(x,50,x,63);
  u8g.drawCircle(x,50,8);此处的X就是大树移动的坐标了。。。

求赐教!{:soso_e150:}

[pre lang="arduino" line="1" file="Game"]#include "U8glib.h"
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
int x;
void setup()
{
  pinMode (14,INPUT);
}
//////////////////////////////////////
void drawtree()
{
  u8g.drawLine(x,50,x,63);
  u8g.drawCircle(x,50,8);
}

void drawpeople()
{
  u8g.drawLine(20,50,20,63);
}

////////////////////////////////////
void drawpeoplejump()
{
  u8g.drawLine(20,29,20,42);
}
////////////////////////////////
void drawpeoplejump1()
{
  u8g.drawLine(20,35,20,46);
}
//////////////////////////////
void drawpeoplejump2()
{
  u8g.drawLine(20,40,20,51);
}
//////////////////////////////
void loop(void)
{
  for (x =127;x > 0;x--)
  {
    u8g.firstPage();
    do               
    {
      if ( digitalRead (14) == LOW )
      {
        drawpeoplejump();
        //drawpeoplejump1();
        //drawpeoplejump2();
        }
      else {
        drawpeople();
      }
      drawtree();

    }
    while( u8g.nextPage() );
    delay(30);
  }
}


[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-2-8 11:33:34 | 显示全部楼层
屏还算不错,就是有点耗电,如果是E-ink,E-paper之类的就更炫了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-8 22:03:54 | 显示全部楼层
wing 发表于 2015-2-8 11:33
屏还算不错,就是有点耗电,如果是E-ink,E-paper之类的就更炫了

{:3_55:}电纸书啊 没接触过
回复 支持 反对

使用道具 举报

发表于 2015-2-8 22:49:12 | 显示全部楼层
本帖最后由 leicheng 于 2015-2-9 08:51 编辑

赞一个,有创意。 确实需要碰撞检测,加个判断函数,具体的检测方法与你构建的物理模型有关。你这里仅仅只是个二维场景,对象也简单,因此可以用纵坐标之差进行判断,横坐标在设定的范围内才算得分。按住按钮不放,人物不下来,可以采用时间间隔检测的办法来避免。如果两次按按钮的时间差小于某一设定值,对第二次按的按钮无视,即直接drawpeople。判断时间差利用millis()或micros()。另外建议适当延长小人每一跳的空中滞留时间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-9 12:22:21 | 显示全部楼层
leicheng 发表于 2015-2-8 22:49
赞一个,有创意。 确实需要碰撞检测,加个判断函数,具体的检测方法与你构建的物理模型有关。你这里仅仅只是 ...

{:3_59:}感谢感谢很有启发!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 14:06 , Processed in 0.050578 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表