简明c语言,简明易懂的C语言俄罗斯方块
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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语言俄罗斯方块相关推荐
- UML精粹--标准对象建模语言简明教程
今天借了一本<UML精粹--标准对象建模语言简明教程>(Uml Distilled: A Brief Guide to the Standard Object Modeling Langu ...
- c语言程序链接过程,C语言简明教程(二):C程序编译链接过程和实例对照详解...
不像高级编程语言,在C语言开发中,了解其编译链接过程显得相对重要,因为C语言是较为底层的语言,很多时候我们调试C程序或者解决其它问题都可能会涉及到C编译链接的相关知识,例如编译动态库或者静态库.下面我 ...
- 航天生物计算机新能源你对哪个领域的课,写作《语言简明》课件.ppt
文档介绍: 写作语言简明R·七年级下册也铸底辕舟***伴伴我馏饰悍衷镶镊贷充苛捶圭涌裳电挑醒猾方夏凿百械丧写作<语言简明>课件写作<语言简明>课件1.懂得简明是写作时语言表达的 ...
- C语言简明教程,C语言简明教程
C语言是一种结构化的计算机程序设计语言,具有使用灵活.表达能力强,兼具高级语言和低级语言双重功能等特点,是各大院校计算机程序设计入门课程的*语言之一.本书以应用性为中心,以培养程序设计思想和程序设计能 ...
- 初一计算机第6单元,部编版七年级语文下册第六单元写作空间语言简明
导读: 为大家提供了部编版七年级语文下册的第六单元的写作空间,航天.生物.计算机.新能源--你对哪个领域的科学技术最感兴趣?请搜集相关资料,加深对这种科学技术的理解.在此基础上,展开想象,写一篇作文, ...
- [201206][UML 精粹][标准对象建模语言简明指南][第3版][Martin Fowler][著]
[201206][UML 精粹][标准对象建模语言简明指南][第3版][Martin Fowler][著][UMLChina][潘加宇][译] 第 1 章 简介 1.1 UML 是什么 1.2 使用 ...
- rust放置木箱转向_[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]...
[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kre ...
- c语言程序设计铁道版,C语言程序设计(方少卿) 铁道C第1章(修订版).pdf
第一章第一章 CC语言概述语言概述 • 1.1 C语言的演变及特点 • 1.2 C源程序的结构特点 • 1.3 数据输入和输出的常用方法 • 1.4 C语言的字符集与C语言词汇 • 1.5 Turbo ...
- C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)
C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...
- python实现c语言编译器安卓版_c语言编译器ide下载app-c语言编译器ide软件下载v1.5.1 安卓版-2265安卓网...
c语言编译器ide软件是一款非常实用的练习代码的服务软件,操作简单,好上手,宛如和电脑操作般,各种你需要的功能在这里都能找到的,如果最新刚好在备考的 小伙伴们,不如现在现在下载体验体验吧! c语言编译 ...
最新文章
- wxWidgets:wxPaintEvent类用法
- 使用aop解决事务问题(xml版)
- 腾讯QQ团队开源分布式后台毫秒服务引擎全解析:引擎架构、RPC、灰度……
- 建站零基础入门:手把手教你如何自助建站
- functools模块
- 烽火携手中航信斩获“十佳上云”优秀案例大奖
- 杂题 P1640 [SCOI2010]连续攻击游戏
- 网络技术——路由器及其配置
- 创业公司的融资阶段:天使轮、种子轮、A轮、C轮、E轮到底是什么意思?
- Python实现线性判别分析教程
- K近邻模型、KNN算法1-构建预测模型
- 做wish用多大的虚拟服务器,虚拟海外仓适应于wish,ebay,速卖通,自营平台
- 防范勒索软件的分层办法
- aep内存用法_H3C CAS云计算管理平台-AEP存储特性配置指导-5W100
- 笔记系列之zookeeper在单机模拟集群安装
- 如何运用债市杠杆套利交易博取收益
- Fast R-CNN 论文翻译
- 一笔画完C语言程序寻找路径算法
- lisp工具箱for中望_晓东工具箱2019 For AutoCAD 2004~2020(CAD插件)
- 《android进阶之光》——事件总线(上)
热门文章
- 路由器管理页面html,路由器的管理登陆页面【入口地址】
- L1, L2以及smooth L1 loss
- 数学三次危机(四)第一次数学危机
- 奇怪的sqlconnection.open错误
- Navicat批量修改数据库某一属性初始值
- 嵌入式技术基础与实践(第4版)
- 软件定义边界(SDP)简介
- 2021年起重机械指挥考试报名及起重机械指挥考试技巧
- widows下安装pycurl并利用pycurl请求https地址
- Flink Event Time / Processing Time / Ingestion Time (事件时间/处理时间/摄取时间)