扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#include graphics.h
创新互联公司服务项目包括涪城网站建设、涪城网站制作、涪城网页制作以及涪城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,涪城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到涪城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
#include stdio.h
#include dos.h
#include conio.h
#include time.h
#include math.h
#include stdlib.h
void draw_block(int x,int y,int style,int way);
void kill_line(int y);
void draw_little_block(int x,int y,int z,int style);
int check_block(int x,int y,int style);
int change(int *i,int *j,int key);
int style1,style,score,speed,l;
int board[10][20];
char str[100];
struct shape
{
int xy[8],next;
};
struct shape shapes[19]= /* 19种方块(前
8个点表示4个小方块的相对位置 第9点表示类型) */
{
{
0,-2, 0,-1, 0, 0, 1, 0, 1
},
{-1, 0, 0, 0, 1,-1, 1, 0, 2},
{ 0,-2, 1,-2, 1,-1, 1, 0, 3},
{-1,-1,-1, 0, 0,-1, 1,-1, 0},
{ 0,-2, 0,-1, 0, 0, 1,-2, 5},
{-1,-1, 0,-1, 1,-1, 1, 0, 6},
{ 0, 0, 1,-2, 1,-1, 1, 0, 7},
{-1,-1,-1, 0, 0, 0, 1, 0, 4},
{-1, 0, 0,-1, 0, 0, 1, 0, 9},
{ 0,-2, 0,-1, 0, 0, 1,-1,10},
{-1,-1, 0,-1, 1,-1, 0, 0,11},
{ 0,-1, 1,-2, 1,-1, 1, 0, 8},
{-1, 0, 0,-1, 0, 0, 1,-1,13},
{ 0,-2, 0,-1, 1,-1, 1, 0,12},
{-1,-1, 0,-1, 0, 0, 1, 0,15},
{ 0,-1, 0, 0, 1,-2, 1,-1,14},
{ 0,-3, 0,-2, 0,-1, 0, 0,17},
{-1, 0, 0, 0, 1, 0, 2, 0,16},
{ 0,-1, 0, 0, 1,-1, 1, 0,18}
};
#define MAPXOFT 9 /* 第1个方块的位置 */
#define MAPYOFT 5
#define MAPXOFT1 18 /* 下一个方块的位置 */
#define MAPYOFT1 17
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#define ENTER 0x1c0d
int main()
{
int gdriver,gmode,
i,j,key,x0=5,y0=1,m,n,c,key1,p,q,le=0,b;
l=1,score=0;
gdriver=DETECT;
initgraph(gdriver,gmode,"D:\\TURBOC2");
randomize();
for(m=0;m=19;m++)
for(n=0;n=19;n++)
board[m][n]=0; /* 初始游戏版 */
setcolor(10); /* 开机的画面 */
settextstyle(0,0,3);
outtextxy(10,150,"WELCOME TO RUSSIS");
outtextxy(10,250,"READY GO");
setcolor(14);
settextstyle
(0,0,4);
outtextxy(10,350,"^_^");
/*
circle(400,350,60);
ellipse(370,340,60,120,25,25);
ellipse(430,340,60,120,25,25);
ellipse(400,350,225,315,30,30);*/
getch();
settextstyle(0,0,1);
cleardevice();
setcolor(LIGHTRED); /* 画出游戏所在的范围图
*/
setlinestyle(0,0,3);
setfillstyle(1,14);
rectangle(157,419,533,429);
floodfill(300,424,LIGHTRED);
setcolor(LIGHTRED);
setlinestyle(0,0,3);
setfillstyle(1,14);
rectangle(147,95,157,429);
floodfill(152,200,LIGHTRED);
setcolor(LIGHTRED);
setlinestyle(0,0,3);
setfillstyle(1,14);
rectangle(323,95,333,429);
floodfill(330,320,LIGHTRED);
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,BLUE);
rectangle(450,50,500,70);
floodfill(455,55,LIGHTRED);
setcolor(10);
for(m=0;m=10;m=m+2)
ellipse(240,94,0,180,84+m,84+m);
setcolor(14);
setfillstyle(1,0);
circle(440,330,60);
floodfill(440,330,14);
outtextxy(420,80,"* you can change the game");
/* 对游戏的说明 */
outtextxy(440,90,"-speed and the gradth by"); /*
上为变形 左右 为 调整
下为快下 ESC为退出 */
outtextxy(440,100," using 'up'and'down'.");
outtextxy(420,110,"* when you are plying the");
outtextxy(440,120,"game,you can use these pu");
outtextxy(440,130,"-tturns.");
outtextxy(420,140,"* if you want to go into t");
outtextxy(440,150,"-he game,please 'enter'.");
outtextxy(420,160,"* you can chang shapes ");
outtextxy(440,170," using UP");
outtextxy(420,180,"* RIGHT and LEFT can" );
outtextxy(440,190," move shapes");
outtextxy(10,40,"GAMESPEED:");
outtextxy(10,100,"GRADTH:");
printf("\n\n\n 1");
printf("\n\n\n\n 0");
/* setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,10);
rectangle(10,65,110,85);
floodfill(15,75,LIGHTRED); */
outtextxy(450,40,"SCORES:");
outtextxy(10,190,"**The speed will");
outtextxy(10,200,"increas if score");
outtextxy(10,210,"increas 3");
for(p=0;p=100;p++) /* 对速度的调整 */
{ key=bioskey(0);
if(key==ENTER)
break;
if(key==UP)
{
if(l==9)
l=9;
if(l9)
l++;
}
if(key==DOWN)
{
if(l==1)
l=l;
if(l1)
l--;
}
gotoxy(2,4);
printf("%d",l);
}
for(q=0;q=100;q++) /* 对高度的调整 */
{
key=bioskey(0);
if(key==ENTER)
break;
if(key==UP)
{
if(le==5)
le=le;
if(le5)
le++;
}
if(key==DOWN)
{
if(le==0)
le=le;
if(le0)
le--;
}
gotoxy(2,8);
printf("%d",le);
}
key=bioskey(0);
if(key==ENTER)
{
style=random(19);
for(m=1;m=le;m++) /* 具体的对高度的调整 */
{
b=random(7)+1;
for(n=1;n=10;n++)
{
if(random(2))
{
board[n-1][20-m]=1;
draw_little_block(MAPXOFT+n,MAPYOFT+21-m,1,b);
}
}
}
while(1)
{
while(1)
{
i=x0,j=y0;
style1=random(19);
setcolor(14); /* 画出下一个方
块 */
draw_block(MAPXOFT1,MAPYOFT1,style1,1);
for(j=y0;j=20;j++)
{
while(1)
{
if(bioskey(1)) /* 方块的
调整 */
{
key=bioskey(0);
change(i,j,key);
}
if(!check_block
(i,j+1,style)) /* 判断方块能不能下降 */
break;
if(j==20)
break;
if(speed==1)
{
draw_block
(i,j,style,0); /* 方块的下降 */
j++;
draw_block
(i,j,style,1);
delay(10000);
}
if(speed!=1)
{
m++;
delay
(10000);
if(m=3*(10-l))
{
m=0;
draw_block
(i,j,style,0); /* 方块的下降 */
j++;
draw_block
(i,j,style,1);
}
}
}
speed=0;
for(m=0;m=6;m+=2) /* 对有方块的位置给予1
的数值 */
board[i+shapes[style].xy[m]-1]
[j+shapes[style].xy[m+1]-1]=1;
if(board[ i][4]==1)
{
setcolor(14);
settextstyle(0,0,2);
outtextxy(10,450,"CAREFUL -_-");
delay(100000000);
delay(100000000);
setcolor(0);
outtextxy(10,450,"CAREFUL -_-");
settextstyle(0,0,1);
setcolor(LIGHTRED);
}
/* setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,10);
rectangle(10,65,110,85);
floodfill(15,75,LIGHTRED);*/
if(l==1) /* 显示当前游戏等级 */
{
setcolor(LIGHTRED);
setlinestyle(0,0,1); /* 容易的速度 */
setfillstyle(1,10);
rectangle(10,65,110,85);
floodfill(15,75,LIGHTRED);
outtextxy(7,70," easy speed");
}
if(l==4)
{
setcolor(BLACK);
outtextxy(7,70," easy speed");
setcolor(LIGHTRED); /* 中等难度 */
setlinestyle(0,0,1);
setfillstyle(1,10);
rectangle(10,65,110,85);
floodfill(15,75,LIGHTRED);
outtextxy(7,70," normal speed");
}
if(l==7)
{
setcolor(BLACK);
outtextxy(7,70," normal speed");
setcolor(LIGHTRED);
setlinestyle(0,0,1); /* 困难的难度 */
setfillstyle(1,10);
rectangle(10,65,110,85);
floodfill(15,75,LIGHTRED);
outtextxy(7,70," hard speed");
}
kill_line(j);
if(j==20)
break;
if(!check_block(i,j+1,style))
break;
}
draw_block(MAPXOFT1,MAPYOFT1,style1,0);
/* 对下1个方块显示位置进行覆盖 */
style=style1; /* 使的方块和显示的方块一样
*/
if(j==1) /* 关机的画面 */
{
setcolor(14);
settextstyle(0,0,2);
outtextxy(170,200,"GAME OVER");
outtextxy(170,240,"THANK YOU");
sleep(3);
exit(0);
}
}
}
}
getch();
}
int change(int *i,int *j,int key) /* 方块的具体的变化(
移动 变形 下降) */
{
if(key==UPcheck_block(*i,*j,shapes[style].next)) /*
变形 */
{
draw_block(*i,*j,style,0);
style=shapes[style].next;
draw_block(*i,*j,style,1);
}
else if(key==LEFTcheck_block(*i-1,*j,style)) /* 移动
*/
{
draw_block(*i,*j,style,0);
(*i)--;
draw_block(*i,*j,style,1);
}
else if(key==RIGHTcheck_block(*i+1,*j,style))
{
draw_block(*i,*j,style,0);
(*i)++;
draw_block(*i,*j,style,1);
}
else if(key==DOWNcheck_block(*i,*j+1,style)) /* 下降
*/
{
draw_block(*i,*j,style,0);
(*j)++;
draw_block(*i,*j,style,1);
speed=1;
}
else if(key==ESC) /* 退出 */
exit(0);
}
void draw_block(int x,int y,int style,int way) /* 画出方块
的位置 */
{
int x1=x+MAPXOFT,y1=y+MAPYOFT;
int i;
if(way==1)
{
setcolor(WHITE);
}
else
{
setcolor(BLACK);
}
for(i=0;i=6;i+=2)
{
draw_little_block(x1+shapes[style].xy[
i],y1+shapes[style].xy[i+1],way,style);
}
}
void draw_little_block(int x,int y,int z,int style) /* 画
出方块的每一个小方块的形状(方块的色彩) */
{ int m,n;
if(z==1) /* 对色彩的调整 */
{
if(0=stylestyle=3)
n=2;
if(4=stylestyle=7)
n=3;
if(8=stylestyle=11)
n=4;
if(12=stylestyle=13)
n=5;
if(14=stylestyle=15)
n=6;
if(16=stylestyle=17)
n=7;
if(style==18)
n=8;
m=1;
}
if(z==0)
{
m=0,n=0;
}
setcolor(m);
setfillstyle(1,n);
rectangle(x*16,y*16,x*16+16,y*16+16);
floodfill(x*16+2,y*16+2,m);
}
void kill_line(int y) /* 消行 */
{
int i,t=1,j,k,color=random(7)+1;
for(;y=1t=4;y--,t++) /* 对4行进行验证 */
{
for(i=1;i=10;i++)
if(!board[i-1][y-1]) /* 严整1行的数组是不是全
为1 */
break;
if(i==11)
{
setcolor(LIGHTRED); /* 对积分底色的画法
*/
setlinestyle(0,0,1);
setfillstyle(1,BLUE);
rectangle(450,50,500,70);
floodfill(455,55,LIGHTRED);
score++; /* 每消去1行 可以得1分 */
setcolor(14);
itoa(score,str,10);
outtextxy(460,55,str);
if(score!=0score%3==0)
l++; /* 每次分到一定位置是 速度进
行提高(目前是3行加1次 可以调整) */
setcolor(14); /* 每次消去是进行庆祝模式 */
settextstyle(0,0,4);
outtextxy(10,310,"COOL");
outtextxy(10,270,"^_^");
delay(100000000);
delay(100000000);
delay(100000000);
setcolor(BLACK);
settextstyle(0,0,4);
outtextxy(10,310,"COOL");
outtextxy(10,270,"^_^");
settextstyle(0,0,1);
if(score%3==0score!=0)
{
setcolor(14);
settextstyle(0,0,2);
outtextxy(10,435,"CONGRATULATION ON YOU ^_^");
sleep(2);
setcolor(BLACK);
settextstyle(0,0,2);
outtextxy(10,435,"CONGRATULATION ON YOU ^_^ ");
settextstyle(0,0,1);
}
for(k=1;k=10;k++) /* 对满了行进行消去
*/
{
setcolor(BLACK);
draw_little_block
(k+MAPXOFT,y+MAPYOFT,0,2);
}
for(j=y-1;j=1;j--) /* 消去1行后 用上面的
累下来(并且调整色彩) */
for(k=1;k=10;k++)
{
board[k-1][j]=board[k-1][j-1];
if(board[k-1][j])
{
setcolor(BLACK);
draw_little_block
(k+MAPXOFT,j+MAPYOFT,0,2);
setcolor(WHITE);
draw_little_block
(k+MAPXOFT,j+1+MAPYOFT,1,color);
}
}
delay(100000000000);
y++;
}
}
}
int check_block(int x,int y,int style) /* 验证能不能往下1
个位置累方块 */
{
int x1=x+MAPXOFT,y1=y+MAPYOFT;
int x2,y2,i;
for(i=0;i=6;i+=2)
{
x2=x1+shapes[style].xy[ i];
y2=y1+shapes[style].xy[i+1];
if(x2=10x220y226(y26||board[x2-10][y2-
6]==0))
continue;
else
break;
}
if(i==8)
return 1;
else
return 0;
getch();
}
我这里也是别人那里看来的。希望对你有用
Golang游戏开发是一个非常开放的领域,它可以使用Go语言来开发游戏,让开发者利用Go语言的优势快速开发游戏。Go语言拥有简单、可拓展、高效的特点,可以有效地满足游戏开发需求。
Go语言提供了一套完整的工具链,包括编译器、调试器和测试框架,为开发者提供了强大的开发支持。此外,Go语言还拥有丰富的标准库,能够帮助开发者编写游戏的核心逻辑,提高开发效率。
Go语言还可以使用第三方框架,比如GoLang Game Engine(GLE),可以帮助开发者快速开发2D游戏和3D游戏。GLE可以让开发者简单地搭建游戏环境,提供各种游戏开发工具,大大提高了游戏开发效率。
总的来说,Golang游戏开发是一个非常有前景的领域,它拥有强大的开发工具和丰富的库,为开发者提供了极大的便利性。开发者可以利用Go语言的优势快速开发高质量的游戏,更好地满足游戏玩家的需求。
DATA SEGMENT ;成功,实现计时器功能
MIN1 DB 30H
MIN2 DB 30H
SEC1 DB 30H
SEC2 DB 30H
TIME DB ?
DATA ENDS
STACK SEGMENT
STACKA DB 100H DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV AH,00H
MOV AL,00H
INT 10H
MOV AH,01H
INT 21H
CMP AL,20H
JE EXIT
MAIN PROC NEAR
MOV AX,DATA
MOV DS,AX
CALL SHOWTIME
RET
MAIN ENDP
EXIT:MOV AH,4CH
INT 21H
SHOWTIME PROC NEAR
MOV AX,DATA
MOV DS,AX
MOV AH,2
MOV DH,5
MOV DL,15
INT 10H
MOV DL,MIN1
MOV AH,02H
INT 21H
MOV DL,MIN2
MOV AH,02H
INT 21H
MOV DL,3AH
MOV AH,02H
INT 21H
MOV DL,SEC1
MOV AH,02H
INT 21H
MOV DL,SEC2
MOV AH,02H
INT 21H
;TOSTRAT:
MOV AH,2CH
INT 21H
MOV TIME,DH
GOTEST1SECOND:
MOV AH,2CH
INT 21H
CMP DH,TIME
JNE L1
JMP GOTEST1SECOND
L1:INC SEC2
MOV AL,SEC2
CMP AL,3AH
JE L2
JMP MAIN
L2:MOV AL,30H
MOV SEC2,AL
INC SEC1
CMP SEC1,36H
JE L3
JMP MAIN
L3:MOV AL,30H
MOV SEC1,AL
INC MIN2
CMP MIN2,3AH
JE L4
JMP MAIN
L4:MOV AL,30H
MOV MIN2,AL
INC MIN1
CMP MIN1,36H
JE L5
JMP MAIN
L5:MOV AL,0
MOV SEC2,AL
MOV SEC1,AL
MOV MIN2,AL
MOV MIN1,AL
CALL MAIN
RET
SHOWTIME ENDP
CODE ENDS
END START ;END MAIN
这个吗?
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流