类似俄罗斯方块的游戏有没有的

共有 1441 人关注过本帖
标题:自己写的俄罗斯方块程序,大家来看看有没有什么问题
等 级:新手上路
&&问题点数:0&&回复次数:11&&&
自己写的俄罗斯方块程序,大家来看看有没有什么问题
#define TOP_X 200
#define TOP_Y 30
#define NUM_X 10
#define NUM_Y 15
#define SIZE 20
#define BEGIN_X 260
#define BEGIN_Y 30
#define TIMER 0x1c
#define VK_RIGHT 0x4d00
#define VK_LEFT 0x4b00
#define VK_UP 0x4800
#define VK_DOWN 0x5000
#define ESC 0x11b
#define UP 1
#define DOWM 2
#define LEFT 3
#define RIGHT 4
#define NONE 0
#define TURE 1
#define FALSE 0
#define MAX_BOX 19
#include&graphics.h&
#include&stdlib.h&
#include&bios.h&
#include&dos.h&
#include&stdio.h&
#include&time.h&
typedef struct BOARD
Board Table_board[NUM_Y][NUM_X];
typedef struct SHAPE
char box[2];
Shape shapes[MAX_BOX]=
{0x88,0xc0,RED,1},
{0xe8,0x0,RED,2},
{0xc4,0x40,RED,3},
{0x2e,0x0,RED,0},
{0x44,0xc0,RED,5},
{0x8e,0x0,RED,6},
{0xc8,0x80,RED,7},
{0xe2,0x0,RED,4},
{0x8c,0x40,RED,9},
{0x6c,0x0,RED,8},
{0x4c,0x80,RED,11},
{0xc6,0x0,RED,10},
{0x4e,0x0,RED,13},
{0x8c,0x80,RED,14},
{0xe4,0x0,RED,15},
{0x4c,0x40,RED,12},
{0x88,0x88,RED,17},
{0xf0,0x0,RED,16},
{0xcc,0x0,RED,18}
int standard=128;
int TimerCounter=0;
int flag_newbox=0;
int score=0;
int speed=0;
int level=5;
void interrupt (*oldhandler)();
initialize(int x,int y,int m,int n)
int gdriver,gmode,i,j,xr,yr,xl,
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,&&);
setbkcolor(0);
cleardevice();
setcolor(WHITE);
for(i=0;i&n;i++)
yr=y+i*SIZE;
xl=x+SIZE;
yl=y+SIZE+i*SIZE;
for(j=0;j&m;j++)
if(Table_board[i][j].var==0)
setfillstyle(1,0);
rectangle(xr,yr,xl,yl);
floodfill(xr+1,yr+1,WHITE);
setfillstyle(0,4);
rectangle(xr,yr,xl,yl);
floodfill(xr+1,yr+1,RED);
xr=xr+SIZE;
xl=xl+SIZE;
void ShowScore()
char *s=&SCORE&;
outtextxy(120,50,s);
sprintf(c,&%d&,score);
outtextxy(135,60,c);
void ShowLevel()
char *s=&LEVEL&;
outtextxy(120,130,s);
sprintf(c,&%d&,speed);
outtextxy(135,140,c);
void Help()
char *s1=&-Roll&;
char *s2=&-Downwards&;
char *s3=&-TurnLeft&;
char *s4=&-TurnRight&;
char *s5=&Esc-Exit&;
char *c1,*c2,*c3,*c4;
sprintf(c1,&%c&,24);
sprintf(c2,&%c&,25);
sprintf(c3,&%c&,27);
sprintf(c4,&%c&,26);
rectangle(200,350,450,450);
outtextxy(230,380,c1);
outtextxy(235,380,s1);
outtextxy(350,380,c2);
outtextxy(355,380,s2);
outtextxy(230,400,c3);
outtextxy(235,400,s3);
outtextxy(350,400,c4);
outtextxy(355,400,s4);
outtextxy(230,420,s5);
int MoveAble(int x,int y,int box_numb,int direction)
int i,j,m,n,pre_n,pre_m,pre_x;
Board RefTable_board[NUM_Y][NUM_X];
n=(x-TOP_X)/SIZE;
m=(y-TOP_Y)/SIZE;
for(i=0;i&NUM_Y;i++)
for(j=0;j&NUM_X;j++)
RefTable_board[i][j].var=Table_board[i][j].
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
RefTable_board[m][n].var=0;
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
RefTable_board[m][n].var=0;
standard=standard/2;
if(direction==LEFT)
if(x==200)
standard=128;
return FALSE;
standard=128;
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
if(RefTable_board[m][n-1].var==1)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
if(RefTable_board[m][n-1].var==1)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
return TURE;
if(direction==RIGHT)
standard=128;
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
if(RefTable_board[m][n+1].var==1||x+SIZE==400)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
if(RefTable_board[m][n+1].var==1||x+SIZE==400)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
return TURE;
if(direction==NONE)
standard=128;
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
if(y+SIZE==330||RefTable_board[m+1][n].var==1)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
if(y+SIZE==330||RefTable_board[m+1][n].var==1)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
return TURE;
show_box(int x,int y,int box_numb,int color)
int i,j,pre_x,m,n,pre_n;
n=(x-TOP_X)/SIZE;
m=(y-TOP_Y)/SIZE;
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
rectangle(x,y,x+SIZE,y+SIZE);
setfillstyle(1,color);
floodfill(x+1,y+1,WHITE);
Table_board[m][n].var=1;
Table_board[m][n].color=
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
rectangle(x,y,x+SIZE,y+SIZE);
setfillstyle(1,color);
floodfill(x+1,y+1,WHITE);
Table_board[m][n].var=1;
Table_board[m][n].color=
standard=standard/2;
standard=128;
EraseBox(int x,int y,int box_numb)
int i,j,pre_x,m,n,pre_n;
n=(x-TOP_X)/SIZE;
m=(y-TOP_Y)/SIZE;
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
setfillstyle(1,0);
floodfill(x+1,y+1,WHITE);
Table_board[m][n].var=0;
Table_board[m][n].color=0;
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
setfillstyle(1,0);
floodfill(x+1,y+1,WHITE);
Table_board[m][n].var=0;
Table_board[m][n].color=0;
standard=standard/2;
standard=128;
void interrupt newhandler()
TimerCounter++;
SetTimer(void interrupt(*IntProc)())
oldhandler=getvect(TIMER);
disable();
setvect(TIMER,IntProc);
KillTimer()
disable();
setvect(TIMER,oldhandler);
int MkNextBox()
seed=time(NULL);
srand(seed);
box_numb=rand()%MAX_BOX;
return box_
int EddyAble(int x,int y,int box_numb)
int i,j,pre_n,pre_x,pre_m,m,n,current_
Board RefTable_board[NUM_Y][NUM_X];
n=(x-TOP_X)/SIZE;
m=(y-TOP_Y)/SIZE;
for(i=0;i&NUM_Y;i++)
for(j=0;j&NUM_X;j++)
RefTable_board[i][j].var=Table_board[i][j].
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
RefTable_board[m][n].var=0;
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
RefTable_board[m][n].var=0;
standard=standard/2;
current_box=shapes[box_numb].
standard=128;
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[current_box].box[0]&standard)
if(RefTable_board[m][n].var==1||x==400)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[current_box].box[1]&standard)
if(RefTable_board[m][n].var==1||x==400)
standard=128;
return FALSE;
standard=standard/2;
standard=128;
return TURE;
int DelFullRow(int y)
int i,j,x1,y1,xr,yr,xl,yl,t_
for(i=0;i&y;i++)
for(j=0;j&10;j++)
Table_board[y-i][j]=Table_board[y-i-1][j];
for(i=0;i&NUM_Y;i++)
yr=y1+i*SIZE;
xl=x1+SIZE;
yl=y1+SIZE+i*SIZE;
for(j=0;j&NUM_X;j++)
if(Table_board[i][j].var==0)
setfillstyle(1,0);
rectangle(xr,yr,xl,yl);
floodfill(xr+1,yr+1,WHITE);
setfillstyle(0,4);
rectangle(xr,yr,xl,yl);
floodfill(xr+1,yr+1,RED);
xr=xr+SIZE;
xl=xl+SIZE;
for(i=0;i&NUM_Y;i++)
for(j=0;j&NUM_X;j++)
if(Table_board[i][j].var==1)
return y1;
y1=y1+SIZE;
void setFullRow(int t_boardy)
int i,j,count,m,
m=(t_boardy-TOP_Y)/SIZE;
for(i=NUM_Y-1;i&=m;i--)
for(j=0;j&NUM_X;j++)
if(Table_board[i+num][j].var==1)
if(count==NUM_X)
t_boardy=DelFullRow(i+num);
score=score+10;
ShowScore();
ShowLevel();
m=(t_boardy-TOP_Y)/SIZE;
void Initialize_box(int box_numb)
int i,j,x,y,pre_x,pre_x1,x1,y1;
char *s=&Nextbox&;
x1=x+SIZE;
y1=y+SIZE;
pre_x1=x1;
standard=128;
for(i=0;i&2;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[0]&standard)
setfillstyle(1,4);
rectangle(x,y,x1,y1);
floodfill(x+1,y+1,WHITE);
setfillstyle(0,0);
rectangle(x,y,x1,y1);
floodfill(x+1,y+1,WHITE);
x1=x1+SIZE;
standard=standard/2;
x1=pre_x1;
y1=y1+SIZE;
standard=128;
for(i=2;i&4;i++)
for(j=0;j&4;j++)
if(shapes[box_numb].box[1]&standard)
setfillstyle(1,4);
rectangle(x,y,x1,y1);
floodfill(x+1,y+1,WHITE);
setfillstyle(0,0);
rectangle(x,y,x1,y1);
floodfill(x+1,y+1,WHITE);
x1=x1+SIZE;
standard=standard/2;
x1=pre_x1;
y1=y1+SIZE;
standard=128;
outtextxy(110,230,s);
int main()
int i,j,key,current_x,current_y,judge,current_box,next_
current_x=BEGIN_X;
current_y=BEGIN_Y;
current_box=MkNextBox();
for(i=0;i&NUM_Y;i++)
for(j=0;j&NUM_X;j++)
Table_board[i][j].var=0;
Table_board[i][j].color=0;
initialize(TOP_X,TOP_Y,NUM_X,NUM_Y);
SetTimer(newhandler);
show_box(BEGIN_X,BEGIN_Y,current_box,RED);
next_box=MkNextBox();
ShowScore();
ShowLevel();
Initialize_box(next_box);
while(bioskey(1)==0)
if(TimerCounter&level)
TimerCounter=0;
judge=MoveAble(current_x,current_y,current_box,NONE);
EraseBox(current_x,current_y,current_box);
current_y=current_y+SIZE;
show_box(current_x,current_y,current_box,RED);
flag_newbox=1;
if(score/50==0)
if(score/50==1)
if(score/50==2)
if(score/50==3)
if(score/50==4)
if(flag_newbox)
if(current_y==BEGIN_Y)
char *s=&GAME OVER&;
rectangle(260,150,340,230);
outtextxy(280,190,s);
setFullRow(current_y);
current_x=BEGIN_X;
current_y=BEGIN_Y;
current_box=next_
show_box(BEGIN_X,BEGIN_Y,current_box,RED);
next_box=MkNextBox();
Initialize_box(next_box);
flag_newbox=0;
key=bioskey(0);
switch(key)
case VK_RIGHT:
TimerCounter=0;
judge=MoveAble(current_x,current_y,current_box,RIGHT);
EraseBox(current_x,current_y,current_box);
current_x=current_x+SIZE;
show_box(current_x,current_y,current_box,RED);
case VK_LEFT:
TimerCounter=0;
judge=MoveAble(current_x,current_y,current_box,LEFT);
EraseBox(current_x,current_y,current_box);
current_x=current_x-SIZE;
show_box(current_x,current_y,current_box,RED);
case VK_UP:
TimerCounter=0;
judge=EddyAble(current_x,current_y,current_box);
EraseBox(current_x,current_y,current_box);
current_box=shapes[current_box].
show_box(current_x,current_y,current_box,RED);
case VK_DOWN:
closegraph();
搜索更多相关主题的帖子:
等 级:新手上路
帖 子:132
用TC的库 不如学着写SDK ..
算法学习群
来 自:苏州科技学院
等 级:新手上路
帖 子:749
Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
等 级:新手上路
帖 子:28
等 级:新手上路
帖 子:47
好长的程序,现在阶段我还看不懂.
软件设计师 君羊:
等 级:新手上路
帖 子:29
没有注释,我还看到了goto
来 自:四川
等 级:新手上路
等 级:新手上路
看晕了 ,,
等 级:新手上路
帖 子:31
等 级:新手上路
回复 6# 切忌浮躁 的帖子
你能帮我看看,能否将那个GOTO改进一下? 我是没办法了
版权所有,并保留所有权利。
Powered by , Processed in 0.028646 second(s), 9 queries.
Copyright&, BCCN.NET, All Rights Reserved内容字号:
段落设置:
字体设置:
精准搜索请尝试:
Win8 Modern风格的俄罗斯方块 输了有“惊喜”
来源:作者:HaLu责编:黄幻凌
这是最近台湾地区好多网友转帖的一个小游戏,俄罗斯方块儿不陌生的吧,那有没有见过
Modern 版的俄罗斯方块呢?作者 Grassboy Wu 设计的整个界面也是充满了Modern 感。
游戏玩法很简单,游戏中每个方块都有微软Windows Logo 的红黄蓝绿等基本配色组成,除了单纯合并在一起可以消除之外,组合成Windows Logo 也可以消除。
另外据传游戏中还埋伏了三个彩蛋,小编不才没找出全部来,但其中一个彩蛋却是很好找,等你输了之后它自然出现,别被惊倒,少许震撼?我只想说”又没事,耍耍而已,偶尔幽默嘛~“
点击访问:
操作界面,左右方向键控制方向,上下进行翻转,【END】【SPACE】是快速下降:
界面如 Modern UI 一样,一如既往的简洁和清爽:
输了会怎样?这里就不截图了,你看到以后估计会说:”成,你赢了~“
更多小游戏欢迎点击&―― 微信搜索“IT之家”关注抢6s大礼!下载IT之家客户端()也可参与评论抽楼层大奖!
相关文章|||||
软媒旗下软件:|||||||
IT之家,软媒旗下科技门户网站 - 爱科技,爱这里。
Copyright (C) , All Rights Reserved.
版权所有 鲁ICP备号初一数学,关于用俄罗斯方块拼图问题,,第三小题,本人只会用六种拼,,有没有人能拼七种的,,,高分悬赏_百度作业帮
初一数学,关于用俄罗斯方块拼图问题,,第三小题,本人只会用六种拼,,有没有人能拼七种的,,,高分悬赏
初一数学,关于用俄罗斯方块拼图问题,,第三小题,本人只会用六种拼,,有没有人能拼七种的,,,高分悬赏
写上出题者死全家就行
使用方块(“广块”写错了?)最多的情况就是六种,不可能能用全部七种拼成4×7的长方形
什么叫若干木同方块现在还有没有人玩俄罗斯方块?_百度知道
现在还有没有人玩俄罗斯方块?
提问者采纳
有的,我对它就很感兴趣。益智类游戏嘛,有助于活动大脑滴啦……现在很流行的呢!
赞下啦~~~~谢谢 呵呵!
其他类似问题
为您推荐:
您可能关注的推广回答者:
俄罗斯方块的相关知识
其他3条回答
有啊,qq游戏 里就有一个
火拼俄罗斯,很好玩的!
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 类似俄罗斯方块的游戏 的文章

 

随机推荐