前言

DEV-C++的编程内容十分受限,想编游戏更是天方夜谭, 但总有大神,我为大家准备了3个dev-c++就能编的程序。

一、贪吃蛇

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <cmath>
#include <windows.h>
using namespace std;/*** 光标定位 ***/
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;void locate(int x,int y)
{coord.X=y;coord.Y=x;SetConsoleCursorPosition(hout,coord);
};/*** 隐藏光标 ***/
void hide()
{CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(hout, &cursor_info);
}/*** 生成随机数 ***/
double random(double start, double end)
{return start+(end-start)*rand()/(RAND_MAX + 1.0);
}/*** 定义地图的长宽,蛇的坐标,长度,方向,食物的位置 ***/
int m,n;struct node
{int x,y;
}snake[1000];int snake_length,dir;
node food;
int direct[4][2]={{-1,0},{1,0},{0,-1},{0,1}};/*** 输出墙 ***/
void print_wall()
{cout << " ";for (int i=1;i<=n;i++)cout << "-";cout << endl;for (int j=0;j<=m-1;j++){cout << "|";for (int i=1;i<=n;i++) cout << " ";cout << "|" << endl;}cout << " ";for (int i=1;i<=n;i++)cout << "-";
}/*** 首次输出蛇,其中snake[0]代表头 ***/
void print_snake()
{locate(snake[0].x,snake[0].y);cout << "@";for (int i=1;i<=snake_length-1;i++){locate(snake[i].x,snake[i].y);cout << "*";}
}/*** 判断是否撞墙或者自撞 ***/
bool is_correct()
{if (snake[0].x==0 || snake[0].y==0 || snake[0].x==m+1 || snake[0].y==n+1) return false;for (int i=1;i<=snake_length-1;i++){if (snake[0].x==snake[i].x && snake[0].y==snake[i].y) return false;}return true;
}/*** 随机生成并输出食物位置 ***/
bool print_food()
{srand((unsigned)time(0));bool e;while (1){e=true;int i=(int) random(0,m)+1,j=(int) random(0,n)+1;food.x=i;food.y=j;for (int k=0;k<=snake_length-1;k++){if (snake[k].x==food.x && snake[k].y==food.y){e=false;break;}}if (e) break;}locate(food.x,food.y);cout << "$";return true;
}/*** 蛇的前进 ***/
bool go_ahead()
{node temp;bool e=false;temp=snake[snake_length-1];for (int i=snake_length-1;i>=1;i--)snake[i]=snake[i-1];snake[0].x+=direct[dir][0];snake[0].y+=direct[dir][1];locate(snake[1].x,snake[1].y);cout << "*";/*** 吃到了食物 ***/if (snake[0].x==food.x && snake[0].y==food.y){snake_length++;e=true;snake[snake_length-1]=temp;}/*** 输出此时蛇状态 ***/if (!e){locate(temp.x,temp.y);cout << " ";}elseprint_food();locate(snake[0].x,snake[0].y);cout << "@";/*** 如果自撞 ***/if (!is_correct()){system("cls");cout << "You lose!" << endl << "Length: " << snake_length << endl;return false;}return true;
}/*** 主函数 ***/
int main()
{cout << "--------------------贪吃蛇---------------------" << endl;cout << "请注意窗口大小,以免发生错位.建议将窗口调为最大." << endl;cout << "先选择难度.请在1-10中输入1个数,1最简单,10则最难" << endl;cout << "然后进入游戏画面,以方向键控制方向.祝你游戏愉快!" << endl;cout << "-----------------------------------------------" << endl;m=25;n=40; if (m<10 || n<10 || m>25 || n>40){cout << "ERROR" << endl;system("pause");return 0;}int hard;cin >> hard;if (hard<=0 || hard>100){cout << "ERROR" << endl;system("pause");return 0;}/*** 数据全部初始化,包括蛇长,位置,方向 ***/snake_length=5;clock_t a,b;char ch;double hard_len;for (int i=0;i<=4;i++){snake[i].x=1;snake[i].y=5-i;}dir=3;/*** 输出初始地图,蛇与食物 ***/system("cls");hide();print_wall();print_food();print_snake();locate(m+2,0);cout << "Now length: ";/*** 开始游戏 ***/while (1){/*** 难度随长度增加而提高 ***/hard_len=(double)snake_length/(double) (m*n);/*** 调节时间,单位是ms ***/a=clock();while (1){b=clock();if (b-a>=(int)(400-30*hard)*(1-sqrt(hard_len))) break;}/*** 接受键盘输入的上下左右,并以此改变方向 ***/if (kbhit()){ch=getch();if (ch==-32){ch=getch();switch(ch){case 72:if (dir==2 || dir==3)dir=0;break;case 80:if (dir==2 || dir==3)dir=1;break;case 75:if (dir==0 || dir==1)dir=2;break;case 77:if (dir==0 || dir==1)dir=3;break;}}}/*** 前进 ***/if (!go_ahead()) break;/*** 在最后输出此时长度 ***/locate(m+2,12);cout << snake_length;}system("pause");return 0;
}

二、俄罗斯方块

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <windows.h>
#include <conio.h>using namespace std;int block00[4][4] = { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } };
int block01[4][4] = { { 11,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 } };
int block02[4][4] = { { 12,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,1,0,0 } };
int block03[4][4] = { { 13,0,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block04[4][4] = { { 14,0,0,0 },{ 0,0,0,0 },{ 0,1,0,0 },{ 1,1,1,0 } };
int block05[4][4] = { { 15,0,0,0 },{ 0,1,0,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block06[4][4] = { { 16,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 1,0,0,0 } };
int block07[4][4] = { { 17,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block08[4][4] = { { 18,0,0,0 },{ 0,0,0,0 },{ 0,0,1,0 },{ 1,1,1,0 } };
int block09[4][4] = { { 19,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 0,1,1,0 } };
int block10[4][4] = { { 20,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,0,1,0 } };
int block11[4][4] = { { 21,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 } };
int block12[4][4] = { { 22,0,0,0 },{ 0,0,0,0 },{ 1,0,0,0 },{ 1,1,1,0 } };
int block13[4][4] = { { 23,0,0,0 },{ 0,1,1,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block14[4][4] = { { 24,0,0,0 },{ 0,0,0,0 },{ 0,1,1,0 },{ 1,1,0,0 } };
int block15[4][4] = { { 25,0,0,0 },{ 1,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block16[4][4] = { { 26,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 0,1,1,0 } };
int block17[4][4] = { { 27,0,0,0 },{ 0,0,1,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block18[4][4] = { { 28,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 1,1,0,0 } };void initialWindow(HANDLE hOut);//初始化窗口
void initialPrint(HANDLE hOut);//初始化界面
void gotoXY(HANDLE hOut, int x, int y);//移动光标
void roundBlock(HANDLE hOut, int block[4][4]);//随机生成方块并打印到下一个方块位置
bool collisionDetection(int block[4][4], int map[21][12], int x, int y);//检测碰撞
void printBlock(HANDLE hOut, int block[4][4], int x, int y);//打印方块
void clearBlock(HANDLE hOut, int block[4][4], int x, int y);//消除方块
void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//左移
void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//右移
void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//顺时针旋转90度
int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y);//加速下落
void myStop(HANDLE hOut, int block[4][4]);//游戏暂停
void gameOver(HANDLE hOut, int block[4][4], int map[21][12]);//游戏结束
void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint);//判断是否能消行并更新分值
int main()
{int map[21][12];int blockA[4][4];//候选区的方块int blockB[4][4];//下落中的方块int positionX, positionY;//方块左上角的坐标bool check;//检查方块还能不能下落char key;//用来存储按键int val;//用来控制下落速度int fraction;//用来存储得分int checkpoint;//用来存储关卡int times;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出设备句柄initialWindow(hOut);
initial:gotoXY(hOut, 0, 0);initialPrint(hOut);check = true;val = 50;fraction = 0;checkpoint = 1;times = val;for (int i = 0; i < 20; ++i){for (int j = 1; j < 11; ++j){map[i][j] = 0;}}for (int i = 0; i < 20; ++i){map[i][0] = map[i][11] = 1;}for (int i = 0; i < 12; ++i){map[20][i] = 1;}srand((unsigned)time(NULL));roundBlock(hOut, blockA);while (true){if (check){eliminateRow(hOut, map, val, fraction, checkpoint);check = false;positionX = -3;positionY = 4;if (collisionDetection(blockA, map, positionX, positionY)){for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){blockB[i][j] = blockA[i][j];}}roundBlock(hOut, blockA);}else{gameOver(hOut, blockA, map);goto initial;}}printBlock(hOut, blockB, positionX, positionY);if (_kbhit()){key = _getch();switch (key){case 72:myUp(hOut, blockB, map, positionX, positionY);break;case 75:myLeft(hOut, blockB, map, positionX, positionY);break;case 77:myRight(hOut, blockB, map, positionX, positionY);break;case 80:switch (myDown(hOut, blockB, map, positionX, positionY)){case 0:check = false;break;case 1:check = true;break;case 2:gameOver(hOut, blockB, map);goto initial;default:break;}break;case 32:myStop(hOut, blockA);break;case 27:exit(0);default:break;}}Sleep(20);if (0 == --times){switch (myDown(hOut, blockB, map, positionX, positionY)){case 0:check = false;break;case 1:check = true;break;case 2:gameOver(hOut, blockB, map);goto initial;default:break;}times = val;}}cin.get();return 0;
}void initialWindow(HANDLE hOut)
{SetConsoleTitle("俄罗斯方块");COORD size = { 80, 25 };SetConsoleScreenBufferSize(hOut, size);SMALL_RECT rc = { 0, 0, 79, 24 };SetConsoleWindowInfo(hOut, true, &rc);CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };SetConsoleCursorInfo(hOut, &cursor_info);
}void initialPrint(HANDLE hOut)
{SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);for (int i = 0; i < 20; ++i){cout << "■                    ■☆                      ☆" << endl;}gotoXY(hOut, 26, 0);cout << "☆☆☆☆☆☆☆☆☆☆☆";gotoXY(hOut, 0, 20);cout << "■■■■■■■■■■■■☆☆☆☆☆☆☆☆☆☆☆☆☆";gotoXY(hOut, 26, 1);cout << "分    数:      ";gotoXY(hOut, 26, 2);cout << "关    卡:      ";gotoXY(hOut, 26, 4);cout << "下一方块:";gotoXY(hOut, 26, 9);cout << "操作方法:";gotoXY(hOut, 30, 11);cout << "↑:旋转 ↓:速降";gotoXY(hOut, 30, 12);cout << "→:右移 ←:左移";gotoXY(hOut, 30, 13);cout << "空格键:开始/暂停";gotoXY(hOut, 30, 14);cout << "Esc 键:退出";gotoXY(hOut, 26, 16);cout << "关    于:";gotoXY(hOut, 30, 18);cout << "俄罗斯方块V1.0";gotoXY(hOut, 35, 19);cout << "作者:李国良";
}void gotoXY(HANDLE hOut, int x, int y)
{COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(hOut, pos);
}void roundBlock(HANDLE hOut, int block[4][4])
{clearBlock(hOut, block, 5, 15);switch (rand() % 19){case 0:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}break;case 1:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block01[i][j];}}break;case 2:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}break;case 3:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}break;case 4:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}break;case 5:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}break;case 6:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}break;case 7:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}break;case 8:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}break;case 9:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}break;case 10:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}break;case 11:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}break;case 12:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}break;case 13:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}break;case 14:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}break;case 15:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}break;case 16:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}break;case 17:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}break;case 18:for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block18[i][j];}}break;default:break;}printBlock(hOut, block, 5, 15);
}bool collisionDetection(int block[4][4], int map[21][12], int x, int y)
{for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){if (x + i >= 0 && y + j >= 0 && map[x + i][y + j] == 1 && block[i][j] == 1){return false;}}}return true;
}void printBlock(HANDLE hOut, int block[4][4], int x, int y)
{switch (block[0][0]){case 10:case 11:SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);break;case 12:case 13:case 14:case 15:SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);break;case 16:case 17:case 18:case 19:SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);break;case 20:case 21:case 22:case 23:SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);break;case 24:case 25:SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);break;case 26:case 27:SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);break;case 28:SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);break;default:break;}for (int i = 0; i < 4; ++i){if (i + x >= 0){for (int j = 0; j < 4; ++j){if (block[i][j] == 1){gotoXY(hOut, 2 * (y + j), x + i);cout << "■";}}}}
}void clearBlock(HANDLE hOut, int block[4][4], int x, int y)
{for (int i = 0; i < 4; ++i){if (i + x >= 0){for (int j = 0; j < 4; ++j){if (block[i][j] == 1){gotoXY(hOut, 2 * (y + j), x + i);cout << "  ";}}}}
}void gameOver(HANDLE hOut, int block[4][4], int map[21][12])
{SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);gotoXY(hOut, 9, 8);cout << "GAME OVER";gotoXY(hOut, 8, 9);cout << "空格键:重来";gotoXY(hOut, 8, 10);cout << "ESC键:退出";char key;while (true){key = _getch();if (key == 32){return;}if (key == 27){exit(0);}}
}int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y)
{if (collisionDetection(block, map, x + 1, y)){clearBlock(hOut, block, x, y);++x;return 0;}if (x < 0){return 2;}for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){if (block[i][j] == 1){map[x + i][y + j] = 1;SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);gotoXY(hOut, 2 * (y + j), x + i);cout << "■";}}}return 1;
}void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{if (collisionDetection(block, map, x, y - 1)){clearBlock(hOut, block, x, y);--y;}
}void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{if (collisionDetection(block, map, x, y + 1)){clearBlock(hOut, block, x, y);++y;}
}void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{switch (block[0][0]){case 10:if (collisionDetection(block01, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block01[i][j];}}}break;case 11:if (collisionDetection(block00, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}}else if (collisionDetection(block00, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}--y;}else if (collisionDetection(block00, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}++y;}else if (collisionDetection(block00, map, x, y - 2)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}y = y - 2;}else if (collisionDetection(block00, map, x, y + 2)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block00[i][j];}}y = y + 2;}break;case 12:if (collisionDetection(block03, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}}else if (collisionDetection(block03, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}--y;}else if (collisionDetection(block03, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block03[i][j];}}++y;}break;case 13:if (collisionDetection(block04, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}}else if (collisionDetection(block04, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}--y;}else if (collisionDetection(block04, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block04[i][j];}}++y;}break;case 14:if (collisionDetection(block05, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}}else if (collisionDetection(block05, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}--y;}else if (collisionDetection(block05, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block05[i][j];}}++y;}break;case 15:if (collisionDetection(block02, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}}else if (collisionDetection(block02, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}--y;}else if (collisionDetection(block02, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block02[i][j];}}++y;}break;case 16:if (collisionDetection(block07, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}}else if (collisionDetection(block07, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}--y;}else if (collisionDetection(block07, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block07[i][j];}}++y;}break;case 17:if (collisionDetection(block08, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}}else if (collisionDetection(block08, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}--y;}else if (collisionDetection(block08, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block08[i][j];}}++y;}break;case 18:if (collisionDetection(block09, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}}else if (collisionDetection(block09, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}--y;}else if (collisionDetection(block09, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block09[i][j];}}++y;}break;case 19:if (collisionDetection(block06, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}}else if (collisionDetection(block06, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}--y;}else if (collisionDetection(block06, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block06[i][j];}}++y;}break;case 20:if (collisionDetection(block11, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}}else if (collisionDetection(block11, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}--y;}else if (collisionDetection(block11, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block11[i][j];}}++y;}break;case 21:if (collisionDetection(block12, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}}else if (collisionDetection(block12, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}--y;}else if (collisionDetection(block12, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block12[i][j];}}++y;}break;case 22:if (collisionDetection(block13, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}}else if (collisionDetection(block13, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}--y;}else if (collisionDetection(block13, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block13[i][j];}}++y;}break;case 23:if (collisionDetection(block10, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}}else if (collisionDetection(block10, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}--y;}else if (collisionDetection(block10, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block10[i][j];}}++y;}break;case 24:if (collisionDetection(block15, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}}else if (collisionDetection(block15, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}--y;}else if (collisionDetection(block15, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block15[i][j];}}++y;}break;case 25:if (collisionDetection(block14, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}}else if (collisionDetection(block14, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}--y;}else if (collisionDetection(block14, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block14[i][j];}}++y;}break;case 26:if (collisionDetection(block17, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}}else if (collisionDetection(block17, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}--y;}else if (collisionDetection(block17, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block17[i][j];}}++y;}break;case 27:if (collisionDetection(block16, map, x, y)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}}else if (collisionDetection(block16, map, x, y - 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}--y;}else if (collisionDetection(block16, map, x, y + 1)){clearBlock(hOut, block, x, y);for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){block[i][j] = block16[i][j];}}++y;}break;default:break;}
}void myStop(HANDLE hOut, int block[4][4])
{clearBlock(hOut, block, 5, 15);SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);gotoXY(hOut, 30, 7);cout << "游戏暂停";char key;while (true){key = _getch();if (key == 32){gotoXY(hOut, 30, 7);cout << "        ";printBlock(hOut, block, 5, 15);return;}if (key == 27){exit(0);}}
}void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint)
{SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);for (int i = 19; i >= 0; --i){int x = 0;for (int j = 1; j < 11; ++j){x += map[i][j];}if (x == 10){fraction += 100;if (val > 1 && fraction / 1000 + 1 != checkpoint){checkpoint = fraction / 1000 + 1;val -= 5;}for (int m = i; m > 0; --m){for (int n = 1; n < 11; ++n){map[m][n] = map[m - 1][n];gotoXY(hOut, 2 * n, m);if (map[m][n] == 1){cout << "■";}else{cout << "  ";}}}++i;}}gotoXY(hOut, 36, 1);cout << fraction;gotoXY(hOut, 36, 2);cout << checkpoint;
}

c++小游戏大合集(1)相关推荐

  1. python小游戏大合集(有注释,持续更新)

    目录 这么努力的作者,你确定不给个赞吗? 石头剪刀布 摇色子 猜数字 老虎机 丧尸游戏 如果还想看可以点击这个链接 这么努力的作者,你确定不给个赞吗? 求赞求关注! 如果大家还想看可以去这里 http ...

  2. 勇闯掘金小游戏为一款多个小游戏的合集游戏,有五个关卡:找掘金、石头剪刀布、寻找藏宝图、打地鼠、抽奖。基于Vue

    游戏简介 勇闯掘金小游戏为一款多个小游戏的合集游戏,共有五个关卡,分别为:找掘金.石头剪刀布.寻找藏宝图.打地鼠.抽奖.每个环节20分,满分100分. 完整代码下载地址:勇闯掘金小游戏 快速体验 ht ...

  3. 经典游戏大合集,你的青春也许就在里面!

    今天互联网上的内容,由于各种原因,正在以越来越快的速度消失,而新一代网民们,却并没有备份和记录的习惯及意识. 不远的将来,会有一天,当你特别想找一个东西却搜尽互联网你都找不到,本项目立足于将这样的损失 ...

  4. 小项目/小游戏Demo合集

    几个以前写过的小项目,比较low,拿出来献献丑. 项目我都已经上传在我的博客上,可以免费下载到. PC端2048小游戏 用C#写的,界面大概是这样 基本逻辑如下: 用picturebox构建一个4*4 ...

  5. Created with Cocos丨超好玩的人气 2D/3D 游戏大合集,根本停不下来!

    午休时间到-游戏时间开启!今天 C 姐来为大家推荐一波使用 Cocos Creator 开发的精彩游戏,包括原生.小游戏.H5 等,涵盖多个游戏品类,既有游戏厂商的诚意之作.也有独立开发者的创意巧思, ...

  6. python小游戏开发合集

    1.狗狗年龄对比系统 注意: 1.掌握 wile循环.if-else循环 2.异常捕捉可以使用 try/except 语句. print("=======欢迎进入狗狗年龄对比系统====== ...

  7. 经典好玩的休闲游戏大合集,免费玩

    中日大海战 操作指南:与电脑进行对战,首页是摆阵(注意:摆完后就不能移动了),然后开战,你是看不到电脑方的船只的,只靠运气打对方阵地,如果击 中就会有提示,然后估计对方摆阵位置继续发炮,直到没击中对方 ...

  8. 十一月 android各版本,精选十一月精彩Android游戏大合集

    猪猪历险记(Piggy Adventure)是Android平台一款有趣的休闲益智游戏.Avelon是一个美丽漂亮的地方,许多动物都在这里快乐幸福的生活着.但是某一天邪恶的魔王把Avelon的色彩给全 ...

  9. python工作技巧_能让你工作事半功倍的python小技巧大合集

    导读:Python是目前世界上最流行的编程语言之一.因为: 1. 它容易学习 2. 它用途超广 3. 它有非常多的开源支持(大量的模块和库) 本文作者 Peter Gleeson 是一名数据科学家,日 ...

最新文章

  1. apache nginx禁止跨目录访问
  2. 用户 'IIS APPPOOL\DefaultAppPool'登录失败
  3. 【笔记】Comparison of Object Detection and Patch-Based Classification Deep Learning Models on Mid- to La
  4. NetworkComms V3 之支持TCP连接和UDP连接
  5. Android中为TextView增加自定义的HTML标签
  6. 使用COSBench工具对ceph s3接口进行压力测试--续
  7. webpack — 概述介绍
  8. python时间控件遮罩层_jquery遮罩层插件
  9. SQL Server中的计算列概述
  10. K8s 使用helm 安装 EFK和ELK分布式日志分析系统系列(es版本:6.7.0;)
  11. grails 保存图片
  12. c#:使用bing翻译API
  13. 如何用计算机测量图片景深,景深(摄影测量与遥感学术语 .)_百度百科
  14. 邮件监控云上脚本执行进度
  15. 峨眉派的创始人真的是郭襄吗?
  16. AngularJS 概述
  17. Docker学习之路(三)Docker网络详解
  18. 关于汽车诊断OBD的理解(ISO15031-5)(转发)
  19. 机器学习实战(1)—— 机器学习基础
  20. 【stata】基础指令——学习教程全记录(01)

热门文章

  1. unity打包到安卓游玩流程
  2. sscom AT命令写IMEI号
  3. 360手机刷机工具 360手机刷机 QiKU Download Assistant
  4. 计算机动画_3dsmax的使用(二)
  5. 一台兼容计算机配置价格,完成一台计算机的配置。要求:1、写出配置单,包含品牌、型号和报价 2、写出配置...
  6. 学人工智能必看!具体职业细分
  7. C++如何表示次方(尖号^不是次方的意思,e也不是次方的意思)
  8. 案例 | 珠宝行业:多触点个性化营销,企业微信赋能线下门店导购
  9. 机器学习专栏——(一)人工智能概述
  10. idea配置 Tomcat Deployment添加时没有Artifact选择的解决方案