c++小游戏 推箱子 一等奖代码免费奉上

hello,大家好,好久不见,今天我又来更新小游戏啦!

本次代码是c++小游戏推箱子,这是以前我参加比赛的一个小游戏代码,今天我良心大发,来把这个代码送给大家啦,喜欢的网友可以关注我,我会免费分享高质量c++小游戏代码,话不多说,代码来啦!

注:拿代码吱一声,点个赞也行

#include 
#include 
#include 
//总关数 
int guanshu = 5;

//第一关 
char a[20][20]={
"######",
"#   ##",
"#S*  #",
"#**O #",
"# OO #",
"#    #",
"######"
 };
int alength = 7;//地图行数量 
int xa=3,yb=2;//初始小人的位置 
int num = 3;//箱子位置数量 

//第二关 
char a2[20][20]={
"########",
"#     ##",
"## ## ##",
"#  O   #",
"##*O * #",
"#   S# #",
"########"
};
int alength2 = 7;//地图行数量 
int xa2=6,yb2=5;//初始小人的位置 
int num2 = 2;//箱子位置数量 

//第三关 
char a3[20][20]={
" #####  ",
" # S### ",
" # O  # ",
"### # ##",
"#*# #  #",
"#*O  # #",
"#*   O #",
"########"
};
int alength3 = 8;//地图行数量 
int xa3=2,yb3=4;//初始小人的位置 
int num3 = 3;//箱子位置数量 


//第四关 
char a4[20][20]={
"   #######",
"  ##  # S#",
"  #   #  #",
"  #O  O  #",
"  # O##  #",
"### O # ##",
"#****   # ",
"######### "
};
int alength4 = 8;//地图行数量 
int xa4=2,yb4=9;//初始小人的位置 
int num4 = 4;//箱子位置数量 

//第五关 
char a5[20][20]={
"##########",
"##     ###",
"##O###   #",
"# S  O O #",
"# **# O ##",
"##**#   ##",
"##########"
};
int alength5 = 7;//地图行数量 
int xa5=4,yb5=3;//初始小人的位置 
int num5 = 4;//箱子位置数量 

int getx(int g) {
if(g == 1) {
return xa-1;
}else if(g == 2) {
return xa2-1;
}else if(g == 3) {
return xa3-1;
}else if(g == 4) {
return xa4-1;
}else if(g == 5) {
return xa5-1;
}
} 
int gety(int g) {
if(g == 1) {
return yb-1;
}else if(g == 2) {
return yb2-1;
}else if(g == 3) {
return yb3-1;
}else if(g == 4) {
return yb4-1;
}else if(g == 5) {
return yb5-1;
}
}
int getLength(int g) {
if(g == 1) {
return alength;
}else if(g==2){
return alength2;
}else if(g==3){
return alength3;
}else if(g==4){
return alength4;
}else if(g==5){
return alength5;
}
}
int getNum(int g) {
if(g == 1) {
return num;
}else if(g==2){
return num2;
}else if(g==3){
return num3;
}else if(g==4){
return num4;
}else if(g==5){
return num5;
}
}
int printA(int g) {
for(int i=0;i<=getLength(g);i++){
if(g == 1) {
puts(a[i]);
}else if(g==2){
puts(a2[i]);
}else if(g==3){
puts(a3[i]);
}else if(g==4){
puts(a4[i]);
}else if(g==5){
puts(a5[i]);
}
}
 
}
char getAXY(int g,int x,int y) {
if(g == 1) {
return a[x][y];
}else if(g == 2) {
return a2[x][y];
}else if(g == 3) {
return a3[x][y];
}else if(g == 4) {
return a4[x][y];
}else if(g == 5) {
return a5[x][y];
}
}
void setAXY(int g,int x,int y,char c) {
if(g == 1) {
a[x][y] = c;
}else if(g == 2) {
a2[x][y] = c;
}else if(g == 3) {
a3[x][y] = c;
}else if(g == 4) {
a4[x][y] = c;
}else if(g == 5) {
a5[x][y] = c;
}
}


void Prepare(){
// 设置颜色 // f0-f7 7个颜色 
system("color 0");
// 隐藏光标 // 句柄 
HANDLE hOut;
//光标信息的结构体类型 
CONSOLE_CURSOR_INFO curInfo;
//获得标准输出的句柄。
hOut=GetStdHandle(STD_OUTPUT_HANDLE); 
//由光标填充的字符单元格的百分比。 
curInfo.dwSize=1;
//游标的可见性。 如果游标可见,则此成员为true。
curInfo.bVisible=0;
SetConsoleCursorInfo(hOut,&curInfo);
// 设置标题 // 
SetConsoleTitle("推箱子");
}

void Welcome(){
printf("\n\n                推 箱 子");
printf("\n\n             请按任意键开始");
printf("\n\n      进入每一关游戏后请先按Enter键获得提示");
getch();
system("cls");
printf("\n\n         注:本游戏版权归(大家可以在c++代码第200行把括号内的文字改成自己名字)所有");
system("color 4");
getch();
//清屏 
system("cls");
}

void Set(){
HANDLE hOut;
//表示一个字符在控制台屏幕上的坐标 
COORD pos={0,0};
hOut=GetStdHandle(STD_OUTPUT_HANDLE);
//将光标设置到pos位置 
SetConsoleCursorPosition(hOut,pos);
}

int main(){

Prepare();
Welcome();
system("color 07");
char ch;
//第一关 
for(int p=1;p<=guanshu;p++) {
int g = p;
int x =getx(g);
int y = gety(g);
int cnt=0;//计数,统计消掉的数量 
//将二维数组输出到屏幕中,
printA(g);
while(1){
ch=getch();
if(ch==-32){
ch=getch();//按下任意一个按键 
if(ch==80){//按下向下键 
if(getAXY(g,x+1,y)==' ') {//下方是空格 
setAXY(g,x,y,' ');//a[x][y]=' ';
x++;
setAXY(g,x,y,'S');//a[x][y]='S';
}
else if(getAXY(g,x+1,y)=='O'){//下方是箱子 
if(getAXY(g,x+2,y)==' '){//下下个格子是空格 
setAXY(g,x,y,' ');//a[x][y]=' ';
x++;
setAXY(g,x,y,'S');//a[x][y]='S';//小人向下移动 
setAXY(g,x+1,y,'O');//a[x+1][y]='O';//箱子向下移动 
}
else if(getAXY(g,x+2,y)=='*') {//下下个格子是位置 
setAXY(g,x,y,' ');//a[x][y]=' ';
x++;
setAXY(g,x,y,'S');//a[x][y]='S';//小人向下移动 
setAXY(g,x+1,y,' ');//a[x+1][y]=' ';//箱子覆盖了,变成空格 
cnt++;//消掉的数量+1 
}
}
}else if(ch==72){ //按下上键 
if(getAXY(g,x-1,y) ==' '){//上方是空格 
setAXY(g,x,y,' ');//a[x][y]=' ';
x--;
setAXY(g,x,y,'S');//a[x][y]='S';
}
else if(getAXY(g,x-1,y)=='O'){//上方是箱子 
if(getAXY(g,x-2,y) ==' '){//上上方是空格 
setAXY(g,x,y,' ');//a[x][y]=' ';
x--;
setAXY(g,x,y,'S');//a[x][y]='S';
setAXY(g,x-1,y,'O');//a[x-1][y]='O';
}
else if(getAXY(g,x-2,y)=='*'){//上上方是箱子位置 
setAXY(g,x,y,' ');//a[x][y]=' ';
x--;
setAXY(g,x,y,'S');//a[x][y]='S';
setAXY(g,x-1,y,' ');//a[x-1][y]=' ';
cnt++;
}
}
}
else if(ch==75){//按下左键 
if(getAXY(g,x,y-1)==' '){//左边是空格 
setAXY(g,x,y,' ');//a[x][y]=' ';
y--;
setAXY(g,x,y,'S');//a[x][y]='S';
}
else if(getAXY(g,x,y-1)=='O'){
if(getAXY(g,x,y-2)==' '){
setAXY(g,x,y,' ');//a[x][y]=' ';
y--;
setAXY(g,x,y,'S');//a[x][y]='S';
setAXY(g,x,y-1,'O');//a[x][y-1]='O';
}
else if(getAXY(g,x,y-2)=='*'){
setAXY(g,x,y,' ');//a[x][y]=' ';
y--;
setAXY(g,x,y,'S');//a[x][y]='S';
setAXY(g,x,y-1,' ');//a[x][y-1]=' ';
cnt++;
}
}
}
else if(ch==77) {//按下右键 
if(getAXY(g,x,y+1)==' '){
setAXY(g,x,y,' ');//a[x][y]=' ';
y++;
setAXY(g,x,y,'S');//a[x][y]='S';
}
else if(getAXY(g,x,y+1)=='O'){
if(getAXY(g,x,y+2)==' '){
setAXY(g,x,y,' ');//a[x][y]=' ';
y++;
setAXY(g,x,y,'S');//a[x][y]='S';
setAXY(g,x,y+1,'O');//a[x][y+1]='O';
}
else if(getAXY(g,x,y+2)=='*'){
setAXY(g,x,y,' ');//a[x][y]=' ';
y++;
setAXY(g,x,y,'S');//a[x][y]='S';
setAXY(g,x,y+1,' ');//a[x][y+1]=' ';
cnt++;
}
}
}
}
printf("--*******************--\n");
printf("游戏说明:S    你所操控的人\n");
printf("          #    墙\n");
printf("          *    你需要把箱子放到的地方\n");
printf("          O    你的箱子\n");
printf("     所有关卡都有解\n") ;
printf("本游戏只能用上下左右四个键来操控\n");
printf("--*******************--\n");
Set();//将光标设置回到第一个位置,重新打印图形 
printA(g);
if(cnt==getNum(g))
break;
}
if(g < guanshu) {
printf("\n\n\n\n\n\n\n\n\n\n恭喜你,通过第%d关!\n",g);
printf("\n    请稍等");
}else {
printf("恭喜你,通关啦!\n");
}

Sleep(3000);
system("cls");
} 

return 0;
}

我解释一下这个代码的知识    通过公式:\frac{\partial \prod \prod \sqrt{\varepsilon \gamma \sqsubseteq \supseteqq \mathbb{P}\mathbb{R}\sin \: }}{\partial x},然后像这样,在那样就行了

你可能感兴趣的:(c++小游戏,c++,c++,游戏)