自己用C语言编写的俄罗斯方块小游戏 hello world级

更新时间:2023-11-24 10:20:11 阅读: 评论:0

我喜欢的一种动物-农村自建房申请书范文

自己用C语言编写的俄罗斯方块小游戏 hello world级
2023年11月24日发(作者:银行业从业)#include
#include
#include
#include
#include
#include "time.h"
#include "fb_draw.h"
#define SMALL_CUBSIZE 4
#define X_SMALL_START 500
#define Y_SMALL_START 100
#define SMALL_UNIT 10
#define BIG_CUBSIZE_X 16
#define BIG_CUBSIZE_Y 12
#define BIG_UNIT 25
int small_cub[SMALL_CUBSIZE][SMALL_CUBSIZE]={0};
int big_cub[BIG_CUBSIZE_X][BIG_CUBSIZE_Y]={0};
int record[BIG_CUBSIZE_X][BIG_CUBSIZE_Y]={0};
int record2[BIG_CUBSIZE_X][BIG_CUBSIZE_Y]={0};
static int small_color;
static int big_color=0xa0;
static int stop_flag=0,count=0;
static int flag1=0,flag2;
struct termios old,new;
void clear_screen()
{
tint x,y;
tfor (x = 0; x < xres(); x++)
ttfor (y = 0; y < yres(); y++) {
tttfb_draw_point(x, y, 0x0);
tt}
}

void draw_frame()
{
tint x,y;
tfor(x=99,y=99;x<402;x++)
ttfb_draw_point(x, y, 0xbf);
tfor(x=99,y=99;y<502;y++)
ttfb_draw_point(x, y, 0xbf);
tfor(x=401,y=99;y<502;y++)
ttfb_draw_point(x, y, 0xbf);
tfor(x=99,y=501;x<402;x++)
ttfb_draw_point(x, y, 0xbf);

}
void zero_cub(int x,int y,int chon)
{
tint i,j;
tfor(i=0;ittfor(j=0;jtttif(chon==1)
ttttsmall_cub[i][j]=0;
tttel
ttttbig_cub[i][j]=0;
tt}
t}
}
void small_cub_lect(int a)
{
tint i,j;
tzero_cub(SMALL_CUBSIZE,SMALL_CUBSIZE,1);
tswitch(a){
ttca 0:
tttfor(i=0;i<2;i++){
ttttfor(j=0;j<2;j++)
tttttsmall_cub[i][j]=1;
ttt}
tttbreak;
ttca 1:
tttfor(i=0;i<4;i++)
ttttsmall_cub[0][i]=1;
tttbreak;
ttca 2:
tttfor(i=0;i<4;i++)
ttttsmall_cub[i][0]=1;
tttbreak;
ttca 3:
tttfor(i=0;i<2;i++)
ttttsmall_cub[0][i]=1;
tttfor(i=1;i<3;i++)
ttttsmall_cub[1][i]=1;
ttttbreak;
ttca 4:
tttfor(i=1;i<3;i++)
ttttsmall_cub[i][0]=1;
tttfor(i=0;i<2;i++)
ttttsmall_cub[i][1]=1;
tttbreak;
ttca 5:
tttfor(i=1;i<3;i++)
ttttsmall_cub[0][i]=1;
tttfor(i=0;i<2;i++)
ttttsmall_cub[1][i]=1;
tttbreak;
ttca 6:
tttfor(i=0;i<2;i++)
ttttsmall_cub[i][0]=1;
tttfor(i=1;i<3;i++)
ttttsmall_cub[i][1]=1;
tttbreak;
ttca 7:
tttfor(i=0;i<3;i++)
ttttsmall_cub[i][0]=1;
tttsmall_cub[0][1]=1;
tttbreak;
ttca 8:
tttfor(i=0;i<3;i++)
ttttsmall_cub[0][i]=1;
tttsmall_cub[1][2]=1;
tttbreak;
ttca 9:
tttfor(i=0;i<3;i++)
ttttsmall_cub[i][1]=1;
tttsmall_cub[2][0]=1;
tttbreak;
ttca 10:
tttfor(i=0;i<3;i++)
ttttsmall_cub[1][i]=1;
tttsmall_cub[0][0]=1;
tttbreak;
ttca 11:
tttfor(i=0;i<3;i++)
ttttsmall_cub[i][1]=1;
tttsmall_cub[0][0]=1;
tttbreak;
ttca 12:
tttfor(i=0;i<3;i++)
ttttsmall_cub[1][i]=1;
tttsmall_cub[0][2]=1;
tttbreak;
ttca 13:
tttfor(i=0;i<3;i++)
ttttsmall_cub[i][0]=1;
tttsmall_cub[2][1]=1;
tttbreak;
ttca 14:
tttfor(i=0;i<3;i++)
ttttsmall_cub[0][i]=1;
tttsmall_cub[1][0]=1;
tttbreak;
ttca 15:
tttfor(i=0;i<3;i++)
ttttsmall_cub[1][i]=1;
tttsmall_cub[0][1]=1;
tttbreak;
ttca 16:
tttfor(i=0;i<3;i++)
ttttsmall_cub[i][0]=1;
tttsmall_cub[1][1]=1;
tttbreak;
ttca 17:
tttfor(i=0;i<3;i++)
ttttsmall_cub[0][i]=1;
tttsmall_cub[1][1]=1;
tttbreak;
ttca 18:
tttfor(i=0;i<3;i++)
ttttsmall_cub[i][1]=1;
tttsmall_cub[1][0]=1;
tttbreak;
ttdefault : return ;
t}
}
void clear_small_screen()
{


int i,j;
tint x,y;t
tfor(i=0;ittfor(j=0;jtttt for (x = X_SMALL_START+j*SMALL_UNIT; x tttttfor (y = Y_SMALL_START+i*SMALL_UNIT; y ttttttfb_draw_point(x, y, 0x0);

ttttt}
tt}
t}


}
int draw_small_cub()
{t
t
tint i,j,x,y;
tint value=0;
tsrand(time(NULL));
tvalue=rand()%19;
tsmall_color=rand()%0xff;
tclear_small_screen();
tsmall_cub_lect(value);
tfor(i=0;ittfor(j=0;jttt if(small_cub[i][j]==1){
tttt for (x = X_SMALL_START+j*SMALL_UNIT; x tttttfor (y = Y_SMALL_START+i*SMALL_UNIT; y ttttttfb_draw_point(x, y, small_color);
ttttt}
ttt}
tt}
t}
treturn value;
}

void big_cub_lect(int value,int x,int y)
{
tint i,j;
tzero_cub(BIG_CUBSIZE_X,BIG_CUBSIZE_Y,2);
tswitch(value){
ttca 0:
tttfor(i=0+x;i<2+x;i++){
ttttfor(j=5+y;j<7+y;j++)
tttttbig_cub[i][j]=1;
ttt}
tttbreak;
ttca 1:
tttfor(i=5+y;i<8+y;i++)
ttttbig_cub[0+x][i]=1;
tttbreak;
ttca 2:
tttfor(i=0+x;i<4+x;i++)
ttttbig_cub[i][5+y]=1;
tttbreak;
ttca 3:
tttfor(i=5+y;i<7+y;i++)
ttttbig_cub[0+x][i]=1;
tttfor(i=6+y;i<8+y;i++)
ttttbig_cub[1+x][i]=1;
ttttbreak;
ttca 4:
tttfor(i=1+x;i<3+x;i++)
ttttbig_cub[i][5+y]=1;
tttfor(i=0+x;i<2+x;i++)
ttttbig_cub[i][6+y]=1;
tttbreak;
ttca 5:
tttfor(i=6+y;i<8+y;i++)
ttttbig_cub[0+x][i]=1;
tttfor(i=5+y;i<7+y;i++)
ttttbig_cub[1+x][i]=1;
tttbreak;
ttca 6:
tttfor(i=0+x;i<2+x;i++)
ttttbig_cub[i][5+y]=1;
tttfor(i=1+x;i<3+x;i++)
ttttbig_cub[i][6+y]=1;
tttbreak;
ttca 7:
tttfor(i=0+x;i<3+x;i++)
ttttbig_cub[i][5+y]=1;
tttbig_cub[0+x][6+y]=1;
tttbreak;
ttca 8:
tttfor(i=5+y;i<8+y;i++)
ttttbig_cub[0+x][i]=1;
tttbig_cub[1+x][7+y]=1;
tttbreak;
ttca 9:
tttfor(i=0+x;i<3+x;i++)
ttttbig_cub[i][6+y]=1;
tttbig_cub[2+x][5+y]=1;
tttbreak;
ttca 10:
tttfor(i=5+y;i<8+y;i++)
ttttbig_cub[1+x][i]=1;
tttbig_cub[0+x][5+y]=1;
tttbreak;
ttca 11:
tttfor(i=0+x;i<3+x;i++)
ttttbig_cub[i][6+y]=1;
tttbig_cub[0+x][5+y]=1;
tttbreak;
ttca 12:
tttfor(i=5+y;i<8+y;i++)
ttttbig_cub[1+x][i]=1;
tttbig_cub[0+x][7+y]=1;
tttbreak;
ttca 13:
tttfor(i=0+x;i<3+x;i++)
ttttbig_cub[i][5+y]=1;
tttbig_cub[2+x][6+y]=1;
tttbreak;
ttca 14:
tttfor(i=5+y;i<8+y;i++)
ttttbig_cub[0+x][i]=1;
tttbig_cub[1+x][5+y]=1;
tttbreak;
ttca 15:
tttfor(i=5+y;i<8+y;i++)
ttttbig_cub[1+x][i]=1;
tttbig_cub[0+x][6+y]=1;
tttbreak;
ttca 16:
tttfor(i=0+x;i<3+x;i++)
ttttbig_cub[i][5+y]=1;
tttbig_cub[1+x][6+y]=1;
tttbreak;
ttca 17:
tttfor(i=5+y;i<8+y;i++)
ttttbig_cub[0+x][i]=1;
tttbig_cub[1+x][6+y]=1;
tttbreak;
ttca 18:
tttfor(i=0+x;i<3+x;i++)
ttttbig_cub[i][6+y]=1;
tttbig_cub[1+x][5+y]=1;
tttbreak;
ttdefault : return ;
t}
}
void prev_record()
{
tint i,j;
tfor(i=0;ittfor(j=0;jtttif(big_cub[i][j]==1)
ttttrecord[i][j]=big_cub[i][j];
}

void return_cub()
{
tint i,j;
tfor(i=0;ittfor(j=0;j
if(record[i][j]==1)
ttttbig_cub[i][j]=1;
tt}

}
void draw_big_cub(int x_start,int y_start)
{

tint i,j,x,y;
tfor(i=0;ittfor(j=0;jttt if(big_cub[i][j]==1){
tttt for (x = x_start+j*BIG_UNIT; x tttttfor (y = y_start+i*BIG_UNIT; y ttttttfb_draw_point(x, y, big_color++);
ttttt}
ttt}
tt}
t}

}
void clear_big_screen()
{
tint i,j;
tint x,y;
tfor(i=0;ittfor(j=0;jtttt for (x = 100+j*BIG_UNIT; x <100+BIG_UNIT+j*BIG_UNIT; x++)
tttttfor (y = 100+i*SMALL_UNIT; y <100+BIG_UNIT+i*BIG_UNIT; y++) {
ttttttfb_draw_point(x, y, 0x0);

ttttt}
tt}
t}
}

int check_stop()
{
tint i,j;
tfor(i=0;ittfor(j=0;jtttif(record[j][i]==1)
ttttbreak;
tt}
ttif(j==BIG_CUBSIZE_X){
ttttif(big_cub[BIG_CUBSIZE_X-1][i]==1)
tttttreturn 1;t
tttt
tt}
ttel{
tttif(big_cub[j-1][i]==1)
ttttreturn 1;
tt
tt}
t}
treturn 0;

}
void parate_cub()
{
tint i,j;
tfor(i=0;ittfor(j=0;jtttif(record[i][j]==1){
ttttbig_cub[i][j]=0;
ttt}
t}
}
void check_delete()
{
tint i,j,p,q;
tfor(i=0;ittfor(j=0;jtttif(record[i][j]==0)
ttttbreak;
tt}
ttif(j==BIG_CUBSIZE_Y){
tttfor(p=i;p>0;p--)
ttttfor(q=0;qtttttrecord[p][q]=record[p-1][q];
tttttprintf("033[40;64H33[7A%d",++count);t
tt}
t}

}
void game_state()
{
tint i;
tfor(i=0;ittif(big_cub[0][i]==1){
tttprintf("GAME OVER BABY!!


");
ttttctattr(0,TCSANOW,&old);
tttexit(1);
tt}
t}
}
void draw_big_cub_down(int a)
{
talarm(1);
tint i,j;
tif(check_stop()){
ttprev_record();
ttcheck_delete();
ttgame_state();
ttflag2=flag1;
ttbig_cub_lect(flag2,0,0);
ttflag1=draw_small_cub();
ttreturn ;
t}t
tfor(i=BIG_CUBSIZE_X-1;i>-1;i--){
ttfor(j=0;jtttif(big_cub[i][j]==1){
ttttbig_cub[i+1][j]=1;
ttttbig_cub[i][j]=0;t
ttt}tt
tt}
t}
treturn_cub();
tclear_big_screen();
tdraw_big_cub(100,100);
tparate_cub();
}
void cub_exchange()
{
tswitch(flag2){
ttca 0:
tttbreak;
ttca 1:
ttt++flag2;
tttbreak;
ttca 2:
tttflag2=1;
tttbreak;
ttca 3:
ttca 4:
ttca 5:
ttt++flag2;
tttbreak;
ttca 6:
tttflag2=3;
tttbreak;
ttca 7:
ttca 8:
ttca 9:
ttt++flag2;
tttbreak;
ttca 10:
tttflag2=7;
tttbreak;
ttca 11:
ttca 12:
ttca 13:
ttt++flag2;
tttbreak;
ttca 14:
tttflag2=11;
tttbreak;
ttca 15:
ttca 16:
ttca 17:
ttt++flag2;
tttbreak;
ttca 18:
tttflag2=15;
ttbreak;
t}

}
int check_left_right()
{
tint i,j,exchage;
tfor(i=0;ittfor(j=0;jtttif(big_cub[j][i]==1)
ttttbreak;
tt}
ttif(big_cub[j][i]==1)
tttbreak;
t}
tif(record[j][i-1]==1)
ttreturn 1;
tfor(i=BIG_CUBSIZE_Y-2;i>0;i--){
ttfor(j=0;jtttif(big_cub[j][i]==1)
ttttbreak;
tt}
ttif(big_cub[j][i]==1)
tttbreak;
t}
tif(record[j][i+1]==1)
ttreturn 1;
treturn 0;

}
t
void cub_move(char ch,int flag)
{
tint i,j,max_x,p,q,down_num=0;


switch(ch){
ttca 'a':
tttfor(p=0;pttttfor(q=0;qtttttif(big_cub[q][p]==1)
ttttttbreak;
tttt}
ttttif(big_cub[q][p]==1)
tttttbreak;
ttt}
tttif(p==0)
ttttreturn ;
tttif(check_left_right())
ttttreturn ;
tttfor(i=0;ittttfor(j=0;jtttttif(big_cub[i][j]==1){
ttttttbig_cub[i][j-1]=1;
ttttttbig_cub[i][j]=0;t
ttttt}tt
tttt}
ttt}
tttbreak;
ttca 'd':
tttfor(p=BIG_CUBSIZE_Y-1;p>=0;p--){
ttttfor(q=BIG_CUBSIZE_Y-1;q>=0;q--){
tttttif(big_cub[q][p]==1)
ttttttbreak;
tttt}
ttttif(big_cub[q][p]==1)
tttttbreak;
ttt}
tttif(p==BIG_CUBSIZE_Y-1)
ttttreturn ;
tttif(check_left_right())
ttttreturn ;
tttfor(i=BIG_CUBSIZE_Y-1;i>=0;i--){
ttttfor(j=BIG_CUBSIZE_X-1;j>=0;j--){
tttttif(big_cub[j][i]==1){
ttttttbig_cub[j][i+1]=1;
ttttttbig_cub[j][i]=0;t
ttttt}tt
tttt}
ttt}
tttbreak;
ttca ' ':tt
tttfor(i=0;ittttfor(j=0;jtttttif(big_cub[i][j]==1)
tttttbreak;
tttt}
tttif(big_cub[i][j]==1)
ttttbreak;
ttt}
tttif(j>=BIG_CUBSIZE_Y-2)
ttttreturn;
tttcub_exchange();
tttbig_cub_lect(flag,i,j-5);
tttbreak;
ttca 's':
tttwhile(down_num<3){
ttttdraw_big_cub_down(0);
ttttdown_num++;
ttt}
tttbreak;
t}tt
}
int main(void)
{
tint ret;
char ch;
tcgetattr(0,&old);
tcgetattr(0,&new);
new.c_lflag = new.c_lflag & ~(ICANON | ECHO);
new.c_cc[VMIN] = 1;
new.c_cc[VTIME] = 0;
tctattr(0,TCSANOW,&new);
tret = fb_open();
tif (ret != 0) {
ttfprintf(stderr, "fb_open() error.
");
ttexit(1);
t}
tclear_screen();
tdraw_frame();
tprintf("033[40;64H33[7A%d",count);t
tsignal(SIGALRM,draw_big_cub_down);
talarm(1);
tflag1=draw_small_cub();
tbig_cub_lect(flag2,0,0);
twhile(1){
ttch=getchar();
ttfflush(NULL);
ttcub_move(ch,flag2);
t}
tfb_clo();
treturn 0;
}


为法-河南旅游景点

自己用C语言编写的俄罗斯方块小游戏 hello world级

本文发布于:2023-11-24 10:20:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1700792411234577.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:自己用C语言编写的俄罗斯方块小游戏 hello world级.doc

本文 PDF 下载地址:自己用C语言编写的俄罗斯方块小游戏 hello world级.pdf

下一篇:返回列表
标签:small
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|