酷!黑客帝国的既视感!开发板还可以这么玩!

2019-08-17 05:28发布

说明:本帖程序通过移植   http://blog.csdn.net/flx413/article/details/52014008   实现

linux有个cmatrix可以实现数字雨的效果,满满的黑客帝国既视感,我的开发板是阿波罗F7,7寸屏幕。但是通过修改一点点代码可以实现任意原子开发板移植。

首先在带屏幕驱动的工程里,加入下面头文件

[mw_shl_code=c,true]#include "stdlib.h"
#include "time.h"
#include "stdio.h"[/mw_shl_code]


[mw_shl_code=c,true]#define SCREEN_WIDTH 400
#define SCREEN_HEIGHT 600
#define DEF_RAIN_NUM 70[/mw_shl_code]

SCREEN_WIDTH 和 SCREEN_HEIGHT  个人感觉改变的是数字雨密集程度,大家可以自己改改看
DEF_RAIN_NUM 是雨的列数,如果下载到开发板,屏幕不滚动,需要把这个值改小


下面就是大段的复制粘贴


[mw_shl_code=c,true]int g_nRainPos[DEF_RAIN_NUM] = { 0 };

char g_strRain[DEF_RAIN_NUM][10] = { 0 };

char CreateRandomNum()
{
    char nRandomNum = 0;
    while( 1 )
    {
            nRandomNum = rand() % 123;
            if( ( nRandomNum >= 65 && nRandomNum <= 90 ) || nRandomNum >= 97 )
            {
                    return nRandomNum;
            }
    }
}

void InitPos()
{
    int i = 0;
    for( i = 0; i < DEF_RAIN_NUM; i++ )
    {
        g_nRainPos = rand() % SCREEN_HEIGHT;
    }
}

void InitNumRain()
{
    int i = 0,j = 0;
  for( i = 0; i < DEF_RAIN_NUM; i++ )
    {
    for( j = 0; j < 10; j++ )
        {
       g_strRain[j] = CreateRandomNum();
    }
  }
}

void ShowNumRain()
{
    int i = 0,j = 0;
    for( i = 0; i < DEF_RAIN_NUM; i++ )
    {
        POINT_COLOR=WHITE;
        for( j = 0; j < 10; j++ )
        {
            LCD_ShowChar(i * 15,g_nRainPos - 15 * j,g_strRain[j],16,1);
            POINT_COLOR=GREEN;
        }
    }

    for( i = 0; i < DEF_RAIN_NUM; i++ )
    {
        g_nRainPos += 15;
    }

    for( i = 0; i < DEF_RAIN_NUM; i++ )
    {
        if( g_nRainPos - 10 * 15 >= SCREEN_HEIGHT )
        {
                g_nRainPos = 0;
        }
    }
}[/mw_shl_code]


main函数的while(1)

[mw_shl_code=applescript,true]InitNumRain();
LCD_Clear(BLACK);
ShowNumRain();
delay_ms(50);[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
mephistopheles
1楼-- · 2019-08-17 07:09
楼主不把实验效果发上来看一下么
正点原子
2楼-- · 2019-08-17 11:05
对啊,上效果图,最好是视频啊

一周热门 更多>