该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

randomize();

registerbgidriver(EGAVGA_driver);

initgraph(&driver,&mode,"");

cleardevice();

setfillstyle(SOLID_FILL,BLUE);

bar(0,0,639,479);

x1=AREAX;

y1=AREAY-BOXW*MAXY;

x2=AREAX+MAXX*BOXW;

y2=AREAY;

rectangle(--x1,--y1,++x2,++y2);

setfillstyle(SOLID_FILL,BLACK);

bar(++x1,++y1,--x2,--y2);

y1=AREAY-MAXY*BOXW; y2=AREAY;

setcolor(DARKGRAY);

for(i=0;i

{

x1=AREAX+i*BOXW;

line(x1,y1,x1,y2);

}

x1=AREAX; x2=x1+MAXX*BOXW;

for(j=0;j

{

y1=AREAY-j*BOXW;

line(x1,y1,x2,y1);

}

for(j=0;j

for(i=0;i

area[j][i]=oldarea[j][i]=0;

actX=0; actY=0; actW=MAXX-1; actH=MAXY-1;

draw();

MESSAGE=mGEN;

}

int genBox()

{

int i,j,boxidx;

boxidx=random(7); FORCOLOR=random(7)+1;

for(j=0;j<4;j++)

for(i=0;i<4;i++)

box[j][i]=BOX[boxidx][j][i];

curW=getW(); curH=getH();

curX=(MAXX+curW)/2;

if(curX+curW>=MAXX)curX=MAXX-1-curW;

curY=MAXY-1-curH;

newX=curX; newY=curY; actX=curX;actY=curY;

actW=newW=curW; actH=newH=curH;

active=1;

if(collision(box)) return 0;

putNewBox();

draw(); MESSAGE=0;

return 1;

}

void lineFull()

{

int row,col, rowEnd,full,i,j;

rowEnd=newY+newH;

if(rowEnd>=MAXY-1) rowEnd=MAXY-2;

for(row=newY; row<=rowEnd;)

{

full=1;

for(col=0;col

if(!area[row][col]){full=0; break;}

if(!full){++row; continue;}

for(j=row; j

for(i=0;i

area[j][i]=area[j+1][i];

actX=0;actY=row; actW=MAXX-1; actH=MAXY-1-row;

draw(); rowEnd--;

}

MESSAGE=mGEN;

}

void draw()

{

int row,col,x1,y1,x2,y2;

for(row=actY;row<=actY+actH;row++)

for(col=actX;col<=actX+actW;col++)

if(area[row][col]!=oldarea[row][col])

{

if(area[row][col]==0)

setfillstyle(SOLID_FILL,BACKCOLOR);

else

setfillstyle(SOLID_FILL,FORCOLOR);

x1=AREAX+col*BOXW; x2=x1+BOXW;

y1=AREAY-(row+1)*BOXW; y2=y1+BOXW;

bar(++x1,++y1,--x2,--y2);

oldarea[row][col]=area[row][col];

}

MESSAGE=0;

}

int moveLeft()

{

newX=curX-1; clearOldBox();

if(collision(box))

{

newX=curX;

putNewBox();

MESSAGE=0;

return 0;

}

putNewBox();

actW=curW+1; actX=curX=newX;

MESSAGE=mDRAW;

return 1;

}

int moveRight()

{

newX=curX+1; clearOldBox();

if(collision(box))

{

newX=curX;

putNewBox();

MESSAGE=0;

return 0;

}

putNewBox();

actW=curW+1; actX=curX; curX=newX;

MESSAGE=mDRAW;

return 1;

}

int moveDown()

{

int i,j;

newY=curY-1;

clearOldBox();

if(collision(box))

{

newY=curY;

putNewBox();

active=0;

MESSAGE=mLINE;

return 0;

}

putNewBox();

actH=curH+1; actY=newY; curY=newY;

MESSAGE=mDRAW;

return 1;

}

int rotate()

{

int newBox[4][4];

int i,j;

clearOldBox();

for(j=0;j<4;j++)

for(i=0;i<4;i++)

newBox[j][i]=0;

for(j=0;j<4;j++)

for(i=0;i<4;i++)

newBox[curW-i][j]=box[j][i];

newW=curH; newH=curW;

if(collisionRotate(newBox))

{

newW=curW; newH=curH; newX=curX; newY=curY;

putNewBox();

MESSAGE=0;

return 0;

}

for(j=0;j<4;j++)

for(i=0;i<4;i++)

box[j][i]=newBox[j][i];

putNewBox();

actH=newH>curH? newH:curH;

actW=curX+actH-newX;

actX=newX; actY=newY; curX=newX;

curY=newY; curW=newW; curH=newH;

MESSAGE=mDRAW;

return 1;

}

int getW()

{

int i,j;

for(i=3;i>0;i--)

for(j=0;j<4;j++)

if(box[j][i]) return i;

return 0;

}

int getH()

{

int i,j;

for(j=3;j>0;j--)

for(i=0;i<4;i++)

if(box[j][i]) return j;

return 0;

}

void clearOldBox()

{

int i,j;

for(j=0;j<=curH; j++)

for(i=0;i<=curW; i++)

if(box[j][i])

area[curY+j][curX+i]=0;

}

void putNewBox()

{

int i,j;

for(j=0;j<=newH;j++)

for(i=0;i<=newW;i++)

if(box[j][i])

area[newY+j][newX+i]=FORCOLOR;

}

int collision(int cbox[][4])

{

int i,j;

if(newX<0) return 1;

if(newX+newW>=MAXX) return 1;

if(newY<0) return 1;

for(j=0;j<=newH;j++)

for(i=0;i<=newW;i++)

if(area[newY+j][newX+i]&&cbox[j][i]) return 1;

return 0;

}

int collisionRotate(int cbox[][4])

{

int i,j;

if(newX+newW>=MAXX) newX=MAXX-1-newW;

if(newY+newH>=MAXY) newY=MAXY-1-newH;

if(collision(cbox)) return 1;

for(i=0;i<=newW;i++)

for(j=0;j<=newH;j++)

if(area[newY+j][newX+i])

{

newX-=newW-i+1; goto L;

}

L: return collision(cbox);

}

int gameOver()

{

if(!active &&(curY+curH>MAXY-3)) return 1;

else return 0;

}

/*                  the end                              */

简明c语言,简明易懂的C语言俄罗斯方块相关推荐

  1. UML精粹--标准对象建模语言简明教程

    今天借了一本<UML精粹--标准对象建模语言简明教程>(Uml Distilled: A Brief Guide to the Standard Object Modeling Langu ...

  2. c语言程序链接过程,C语言简明教程(二):C程序编译链接过程和实例对照详解...

    不像高级编程语言,在C语言开发中,了解其编译链接过程显得相对重要,因为C语言是较为底层的语言,很多时候我们调试C程序或者解决其它问题都可能会涉及到C编译链接的相关知识,例如编译动态库或者静态库.下面我 ...

  3. 航天生物计算机新能源你对哪个领域的课,写作《语言简明》课件.ppt

    文档介绍: 写作语言简明R·七年级下册也铸底辕舟***伴伴我馏饰悍衷镶镊贷充苛捶圭涌裳电挑醒猾方夏凿百械丧写作<语言简明>课件写作<语言简明>课件1.懂得简明是写作时语言表达的 ...

  4. C语言简明教程,C语言简明教程

    C语言是一种结构化的计算机程序设计语言,具有使用灵活.表达能力强,兼具高级语言和低级语言双重功能等特点,是各大院校计算机程序设计入门课程的*语言之一.本书以应用性为中心,以培养程序设计思想和程序设计能 ...

  5. 初一计算机第6单元,部编版七年级语文下册第六单元写作空间语言简明

    导读: 为大家提供了部编版七年级语文下册的第六单元的写作空间,航天.生物.计算机.新能源--你对哪个领域的科学技术最感兴趣?请搜集相关资料,加深对这种科学技术的理解.在此基础上,展开想象,写一篇作文, ...

  6. [201206][UML 精粹][标准对象建模语言简明指南][第3版][Martin Fowler][著]

    [201206][UML 精粹][标准对象建模语言简明指南][第3版][Martin Fowler][著][UMLChina][潘加宇][译] 第 1 章 简介 1.1 UML 是什么 1.2 使用 ...

  7. rust放置木箱转向_[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]...

    [易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kre ...

  8. c语言程序设计铁道版,C语言程序设计(方少卿) 铁道C第1章(修订版).pdf

    第一章第一章 CC语言概述语言概述 • 1.1 C语言的演变及特点 • 1.2 C源程序的结构特点 • 1.3 数据输入和输出的常用方法 • 1.4 C语言的字符集与C语言词汇 • 1.5 Turbo ...

  9. C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  10. python实现c语言编译器安卓版_c语言编译器ide下载app-c语言编译器ide软件下载v1.5.1 安卓版-2265安卓网...

    c语言编译器ide软件是一款非常实用的练习代码的服务软件,操作简单,好上手,宛如和电脑操作般,各种你需要的功能在这里都能找到的,如果最新刚好在备考的 小伙伴们,不如现在现在下载体验体验吧! c语言编译 ...

最新文章

  1. wxWidgets:wxPaintEvent类用法
  2. 使用aop解决事务问题(xml版)
  3. 腾讯QQ团队开源分布式后台毫秒服务引擎全解析:引擎架构、RPC、灰度……
  4. 建站零基础入门:手把手教你如何自助建站
  5. functools模块
  6. 烽火携手中航信斩获“十佳上云”优秀案例大奖
  7. 杂题 P1640 [SCOI2010]连续攻击游戏
  8. 网络技术——路由器及其配置
  9. 创业公司的融资阶段:天使轮、种子轮、A轮、C轮、E轮到底是什么意思?
  10. Python实现线性判别分析教程
  11. K近邻模型、KNN算法1-构建预测模型
  12. 做wish用多大的虚拟服务器,虚拟海外仓适应于wish,ebay,速卖通,自营平台
  13. 防范勒索软件的分层办法
  14. aep内存用法_H3C CAS云计算管理平台-AEP存储特性配置指导-5W100
  15. 笔记系列之zookeeper在单机模拟集群安装
  16. 如何运用债市杠杆套利交易博取收益
  17. Fast R-CNN 论文翻译
  18. 一笔画完C语言程序寻找路径算法
  19. lisp工具箱for中望_晓东工具箱2019 For AutoCAD 2004~2020(CAD插件)
  20. 《android进阶之光》——事件总线(上)

热门文章

  1. 路由器管理页面html,路由器的管理登陆页面【入口地址】
  2. L1, L2以及smooth L1 loss
  3. 数学三次危机(四)第一次数学危机
  4. 奇怪的sqlconnection.open错误
  5. Navicat批量修改数据库某一属性初始值
  6. 嵌入式技术基础与实践(第4版)
  7. 软件定义边界(SDP)简介
  8. 2021年起重机械指挥考试报名及起重机械指挥考试技巧
  9. widows下安装pycurl并利用pycurl请求https地址
  10. Flink Event Time / Processing Time / Ingestion Time (事件时间/处理时间/摄取时间)