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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2404|回復: 0
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:111440 發表于 2016-4-24 09:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人想做一個16X16的點陣游戲機,在網上看到有人做了,但是程序有些不明白,求大神幫忙。
下面是程序

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

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

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

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();                                        //鍵盤掃描
        }
}
/***********數據初始化**********/
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;
}
/************主函數************/
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數組是什么意思,求相助。






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级片免费视频 | 亚洲永久 | 91精品久久久久久久久久小网站 | 色婷婷综合久久久中文字幕 | 成人精品国产 | 亚洲视频在线观看 | 91视频在线观看 | 亚洲国产成人精品久久 | 米奇7777狠狠狠狠视频 | 久久99精品久久久 | 国产精品一区二区三区99 | 亚洲国产第一页 | 99久久精品国产一区二区三区 | 亚洲视频区 | 亚州一区二区三区 | 一区二区三区在线观看视频 | 欧美福利专区 | 中文字幕一区在线观看视频 | 韩日在线观看视频 | 久久久久久免费看 | 你懂的免费在线 | 成人欧美日韩一区二区三区 | 精品福利一区二区三区 | 亚洲欧美国产毛片在线 | 亚洲精品日本 | 欧美成人激情 | 久久这里有精品 | 久久亚洲国产 | 成人激情视频在线 | 欧洲一区二区三区 | 日韩在线欧美 | 欧美成人一区二区三区片免费 | 理伦毛片 | 一区二区三区视频 | 国产福利久久 | 国产精品96久久久久久 | v片网站| 精品视频免费 | 亚洲影音| 一区二区三区亚洲 | 精品欧美视频 |