项目名称:俄罗斯方块
项目语言:C++
项目软件: Microsoft visual Studio 2015
错误1
错误提要:错误使用标识符
错误定位:
clrscr()
错误提示:
未定义标识符“clrscr”
- 解决方案一:
- 将clrscr();替换成 system("cls"); 再加#include<stdlib.h>头文件
- 错误原因:
- 1.clrscr()是在头文件conio.h下的函数,原型是void clrscr(void)
- 2.在VC平台下,显然是不能使用控制台语句conio的,而在TC平台则可以
错误2
错误提要:
错误定位:
kbhit()
gech()
错误提示:
解决方案:
kbhit() 改为 _kbhit()
gech() 改为 _gech()
可运行源码:
- #include <iostream>
- #include<conio.h>
- #include <stdlib.h>
- #include<time.h>
- using namespace std;
- int z=1,a,b=1,c;
- const int kd=12;
- const int zkd=18;
- const int gd=21;
- const int xfk=10;
- int fs=0,dj=1,lsfs=0; //统计分数的变量
- int dx1,dx2,dx3,dx4,dy1,dy2,dy3,dy4; //打方块坐标
- int xdx1=5+xfk,xdx2=4+xfk,xdx3=5+xfk,xdx4=4+xfk,xdy1=1,xdy2=1,xdy3=2,xdy4=2; //小方块坐标
- int map[zkd][gd]; //一个二维数组来决定整个画面
- int sjs (int); //返回一个随机数大小由参数决定
- void csxz (int); //创建一个新的大方块
- void csxzx (int);//创建一个新的小方块
- void csh(); //游戏的轮廓
- void cout_map(); //输出map
- void xz (int,int); //改变当前方块的形态
- void zytjzs (int); //左右控制方块
- void zytj (int,int,int); //左右控制方块
- void xtjzs (); //下移方块
- int xtj (int,int); //下移方块
- int jstj (); //结束条件
- void dfpl (int,int); //消除后的排序
- void dftj (); //消除
- int main (){
- srand((unsigned)time(NULL));
- int lsx=0,lsxy=60,lsy=lsxy; //快速下降时用到的变量
- char k='\0';
- csh();
- c=sjs(6); //取一个随机数
- a=sjs(6);//取一个随机数
- csxz (a);//通过随机数创建一个大方块
- csxzx (c);//通过随机数创建一个小方块
- while (z==1){
- for (long i=0;i<6000000;i++);
- if (kbhit()){
- k=getch();
- }
- if (k=='5'){
- b++;
- if (b>4)b=1;
- xz (a,b); //改变方块的形态 a是当前方块 b是当前的四个形态
- }
- if (k=='4'){
- zytj (a,b,4); //向左控制
- }
- if (k=='6'){
- zytj (a,b,6);//向右控制
- }
- if (k=='8'){lsy=2;}
- lsx++;
- if (lsx>lsy){
- if (xtj (a,b)==0){
- dftj ();
- if (jstj ()==1){
- z=0;
- }else{
- lsy=lsxy;
- a=c;
- c=sjs(6);
- b=1;
- csxz (a);
- csxzx (c);
- }
- }
- lsx=0;
- }
- if (lsfs==5){
- dj++;
- if (lsxy>3)lsxy--;
- lsfs=0;
- }
- k='\0';
- clrscr();
- cout_map();
- }
- cout<<"游戏结束!";
- return 0;
- }
- void csh(){
- for (int y=0;y<gd;y++){
- for (int x=0;x<zkd;x++)map[x][y]=0;
- }
- for (int x=0;x<zkd;x++){map[x][0]=1;map[x][gd-1]=1;}
- for (int y=0;y<gd;y++){map[0][y]=2;map[kd-1][y]=2;map[zkd-1][y]=2;}
- for (int x=12;x<zkd-1;x++)map[x][10]=1;
- map[0][0]=0;map[kd-1][0]=0;map[0][gd-1]=0;map[kd-1][gd-1]=0;map[zkd-1][gd-1]=0;map[zkd-1][0]=0;
- map[kd+1][18]=5;map[kd][18]=4;
- map[kd+2][18]=12;
- map[kd+4][18]=7;map[kd+3][18]=6;
- map[kd+1][16]=9;map[kd][16]=8;
- map[kd+2][16]=12;
- map[kd+4][16]=11;map[kd+3][16]=10;
- }
- void cout_map(){
- for (int y=0;y<gd;y++){
- for (int x=0;x<zkd;x++){
- if (map[x][y]==0)cout<<" ";
- if (map[x][y]==1)cout<<"一";
- if (map[x][y]==2)cout<<"丨";
- if (map[x][y]==3)cout<<"口";
- if (map[x][y]==4)cout<<"分";
- if (map[x][y]==5)cout<<"数";
- if (map[x][y]==12)cout<<": ";
- if (map[x][y]==6){
- if (fs>999&&fs<10000)cout<<fs/100;
- if (fs>99&&fs<1000)cout<<" "<<fs/100;
- if (fs<100)cout<<" ";
- }
- if (map[x][y]==7){
- if (fs>999&&fs<10000){
- if (fs%1000<10)cout<<"0"<<fs%1000;
- if (fs%1000>99){
- if ((fs%1000)%100<10){
- cout<<"0"<<(fs%1000)%100;
- }else{
- cout<<(fs%1000)%100;
- }
- }
- if (fs%1000<100&&fs%1000>9)cout<<fs%1000;
- }
- if (fs>99&&fs<1000){
- if (fs%100<10){
- cout<<"0"<<fs%100;
- }else{
- cout<<fs%100;
- }
- }
- if (fs>9&&fs<100)cout<<fs;
- if (fs<10)cou