久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2427|回復: 0
收起左側

16X16的點陣游戲機 程序求解答

[復制鏈接]
ID:111440 發(fā)表于 2016-4-24 09:37 | 顯示全部樓層 |閱讀模式
本人想做一個16X16的點陣游戲機,在網(wǎng)上看到有人做了,但是程序有些不明白,求大神幫忙。
下面是程序

#include"reg51.h"
#include"stdlib.h"
#include"intrins.h"
#include"keyscan.h"
#define uchar unsigned char
#define uint unsigned int

sbit SDI=P3^4;                //串行數(shù)據(jù)輸入
sbit SCK=P3^6;                //移位
sbit RCK=P3^5;                //并行輸出

extern uchar startcontrol;
uchar h;                                       //底部下落的高度,y=0,剛剛出現(xiàn)
uchar shape_num;                           //一共19種形狀,=0~18
uint speed;                                           //下落速度
uint initial_speed;                           //下落的初始速度
uint system_speed;                           //系統(tǒng)下落速度,會隨著分數(shù)的增加而減小,下落速度會加快
uint fast_speed;                                //按下down鍵時,方塊的下落速度
uint rand_num;                                        //隨機數(shù)變量,產(chǎn)生隨機方塊
uint k;
uint score;                                                //游戲分數(shù)

uchar code num_hang[]={ 0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,
                                                 0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x00};        //從最上面一行開始向下

//uchar code num_qian[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
uchar code num_one[]={
                                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                                        16,4,16,21,208,36,136,36,136,4,236,63,138,4,136,20,136,21,232,24,136,40,136,40,136,52,232,34,0,0,0,0,//俄
                                        252,63,68,34,68,34,68,34,252,63,64,0,32,0,240,31,44,16,64,8,128,4,0,3,224,0,30,0,0,0,0,0,                         //羅
                                        36,24,36,7,126,1,36,1,36,1,60,63,36,9,60,9,36,9,36,9,126,9,0,9,164,8,66,8,0,0,0,0,                                         //斯
                                        64,0,128,0,254,63,32,0,32,0,32,0,224,15,32,8,32,8,16,8,16,8,8,8,4,8,2,6,0,0,0,0,                                         //方
                                        8,1,8,1,200,31,8,17,62,17,8,17,8,17,232,63,8,5,56,5,142,8,128,8,64,16,32,32,0,0,0,0,                                 //塊
                                        64,4,132,4,8,60,224,5,64,2,66,28,196,17,80,9,80,63,72,9,72,9,36,9,164,9,16,12,0,0,0,0,                                 //游
                                        0,10,0,18,124,18,64,2,64,62,164,3,40,18,16,18,48,10,40,10,72,36,68,42,2,49,128,32,0,0,0,0,                         //戲
                                        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0                                 
                                        };
//uchar code num_hou[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
uchar code shape[19][8]={
                                                 0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,                                         //19種方塊形狀
                                                 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
                                                 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,
                                                 0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,
                                                 0x00,0x00,0x00,0x00,0xc0,0x00,0x80,0x01,        
                                                 0x00,0x00,0x80,0x00,0x80,0x01,0x00,0x01,
                                                 0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x00,
                                                 0x00,0x00,0x00,0x01,0x00,0x01,0x80,0x01,
                                                 0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x01,
                                                 0x00,0x00,0x80,0x01,0x80,0x00,0x80,0x00,
                                                 0x00,0x00,0x00,0x00,0x40,0x00,0xc0,0x01,
                                                 0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x01,
                                                 0x00,0x00,0x00,0x00,0x00,0x01,0xc0,0x01,
                                                 0x00,0x00,0x80,0x01,0x00,0x01,0x00,0x01,
                                                 0x00,0x00,0x00,0x00,0xc0,0x01,0x40,0x00,
                                                 0x00,0x00,0x00,0x00,0x80,0x00,0xc0,0x01,
                                                 0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x01,
                                                 0x00,0x00,0x00,0x00,0xc0,0x01,0x80,0x00,
                                                 0x00,0x00,0x80,0x00,0x80,0x01,0x80,0x00
                                                   };
char staticdata[20][2]={    0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0x00,0x00,
                                                        0xff,0xff                };                          //方塊落下后固定顯示

//                                        后8列        前8列    下8行        上8行
void HC595_Send(uchar d0,uchar d1,uchar d2,uchar d3)
{
        uchar i;
//        SCK=1;
//        RCK=1;
        for(i=0;i<8;i++)
        {
                SDI=d0>>7;//&0x01;
                d0<<=1;//>>=1;
                SCK=0;
                _nop_();
                _nop_();
                SCK=1;
        }
        for(i=0;i<8;i++)
        {
                SDI=d1>>7;//&0x01;
                d1<<=1;//>>=1;
                SCK=0;
                _nop_();
                _nop_();
                SCK=1;
        }
        for(i=0;i<8;i++)
        {
                SDI=d2>>7;//&0x01;
                d2<<=1;//>>=1;
                SCK=0;
                _nop_();
                _nop_();
                SCK=1;
        }
        for(i=0;i<8;i++)
        {
                SDI=d3>>7;//&0x01;
                d3<<=1;//>>=1;
                SCK=0;
                _nop_();
                _nop_();
                SCK=1;
        }
        RCK=0;
        _nop_();
        _nop_();
        RCK=1;
}
/**********開始界面*************/
void initial_image()
{
        uchar j,k,ms;
        startcontrol=1;
        while(startcontrol)
        {
                for(ms=10;ms>0;ms--)
                {
                        for(j=0;j<32;j+=2)
                                HC595_Send(~num_one[k+j+1],~num_one[k+j],num_hang[j],num_hang[j+1]);
                }                                
                k+=2;
                if(k==(32*8))        k=0;
                keyscan();                                        //鍵盤掃描
        }
}
/***********數(shù)據(jù)初始化**********/
void initial_set()
{
        char j;
        h=0;
        startcontrol=1;
        shape_num=0;
        initial_speed=50;
        speed=initial_speed;
        system_speed=initial_speed;
        fast_speed=5;
        rand_num=rand()%19;
        shape_num=rand_num;
        score=0;
        for(j=0;j<19;j++)
        {
                staticdata[j][0]=0;
                staticdata[j][1]=0;
        }
}
/**********顯示形狀************/
void shape_display()
{
        uchar j;
        for(j=(h<3)?(3-h):0;j<4;j++)
        {
                HC595_Send(~shape[shape_num][2*j+1],~shape[shape_num][2*j],num_hang[2*(j+h-3)],num_hang[2*(j+h-3)+1]);        
        }
        for(j=0;j<16;j++)
        {
                HC595_Send(~staticdata[j+3][1],~staticdata[j+3][0],num_hang[2*j],num_hang[2*j+1]);         //[3][0] [3][1]~[18][0] [18][1]
        }                                                                                                                                                                                          
}

/**********檢查方塊是否遇到障礙物***********/
uchar check(uchar shapenum)                                                   //????????????
{
        char i=3,j=0;
        while((!j)&&(i>=0))
        {
                if(((shape[shapenum][2*i]+staticdata[h+i][0])!=(shape[shapenum][2*i]|staticdata[h+i][0]))||
                ((shape[shapenum][2*i+1]+staticdata[h+i][1])!=(shape[shapenum][2*i+1]|staticdata[h+i][1])))                 j++;
                //((shape[shapenum][2*i]+staticdata[h+i][0]!=shape[shapenum][2*i]|staticdata[h+i][0])||
                //(shape[shapenum][2*i+1]+staticdata[h+i][1]!=shape[shapenum][2*i+1]|staticdata[h+i][1]))                 j++;                                       
                i--;                         //???
        }
        return j;
}
/************主函數(shù)************/
void main()
{
        char j;
        initial_image();
        initial_set();
        while(1)
        {
                k=speed;
                while(k--)
                {
                        //keyscan();
                        shape_display();
                }
                h++;                         //方塊下落一格
                if(check(shape_num))
                {
                        h--;
                        if(!h)
                        {
                                initial_image();
                                initial_set();
                        }
                        else
                        {                                
                                for(j=0;j<4;j++)
                                {
                                        staticdata[h+j][0]+=shape[shape_num][2*j];                         //[30]~[37]
                                        staticdata[h+j][1]+=shape[shape_num][2*j+1];
                                }
                                h=0;
                                rand_num=rand()%19;
                                shape_num=rand_num;
                        }
                }               
        }                                            
}

我想知道那個staticdata數(shù)組是什么意思,求相助。






回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品99 | 亚洲人在线 | 久久久久久久一区二区 | 成年人视频在线免费观看 | 91视频网址 | 亚洲国产一区二区视频 | 97精品视频在线观看 | 久久国产一区 | 亚洲欧洲中文 | 亚洲精品自拍视频 | 精品久久久久久久 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 91精品国产色综合久久 | 国产成人久久精品 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 午夜男人免费视频 | 成人网在线观看 | av中文字幕在线观看 | 日本理论片好看理论片 | 欧洲av一区| 久久久久国产 | 国产一区二区三区在线 | 最新高清无码专区 | 亚洲欧美国产毛片在线 | 欧美一区二区三区视频在线观看 | 国产精品永久免费 | 欧美极品视频 | 国产精品视频导航 | 黑人精品xxx一区一二区 | 亚洲另类春色偷拍在线观看 | 亚洲人在线观看视频 | 欧美一级在线观看 | 国产欧美日韩在线播放 | 亚洲一区二区三区四区视频 | 99成人免费视频 | 青青草综合网 | 羞羞视频免费在线观看 | 色悠悠久| 成年人精品视频 | 国产特级毛片 | 中文字幕国 |