最近在c++中用最基础的方法作出了推箱子,效果比想象中的好的多,还不闪屏,不明白为什么网上好多人的推箱子代码都几百行几百行的。
教程开始!
第一步,先录入头文件:
#include<iostream>
#include<cstring>
#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
第二步,制作地图(目前只有第一关,以后会努力更完的!请催更。):
char a[10][10]={{" ### "},
{" #6# "},
{" #0####"},
{"### o06#"},
{"#60 ###"},
{"####0# "},
{" #6# "},
{" ### "}};
第三步:创建人物移动:
void move(){
int x,y,p,q;
x=3;
y=4;
p=5;
q=10;
char ch;
print();
while(1) {
ch=getch();
if(ch=='s') {
if(a[x+1][y]!='#'&&a[x+1][y]=='0')
{
a[x+2][y]='0';
a[x][y]=' ';
a[x+1][y]='o';
}
if(a[x+1][y]!='#') {
a[x][y]=' ';
x++;
a[x][y]='o';
system("cls");
print();
}
}
if(ch=='w') {
if(a[x-1][y]!='#'&&a[x-1][y]=='0')
{
a[x-2][y]='0';
a[x][y]=' ';
a[x-1][y]='o';
}
if(a[x-1][y]!='#') {
a[x][y]=' ';
x--;
a[x][y]='o';
system("cls");
print();
}
}
if(ch=='a') {
if(a[x][y-1]!='#'&&a[x][y-1]=='0')
{
a[x][y-2]='0';
a[x][y]=' ';
a[x][y-1]='o';
}
if(a[x][y-1]!='#') {
a[x][y]=' ';
y--;
a[x][y]='o';
system("cls");
print();
}
}
if(ch=='d') {
if(a[x][y+1]!='#'&&a[x][y+1]=='0')
{
a[x][y+2]='0';
a[x][y]=' ';
a[x][y+1]='o';
}
if(a[x][y+1]!='#') {
a[x][y]=' ';
y++;
a[x][y]='o';
system("cls");
print();
}
}
if(a[1][3]=='0'&&a[6][4]=='0'&&a[4][1]=='0'&&a[3][6]=='0')
{
system("cls");
cout<<"You're Win";
break;
}
if(ch=='q')
{
system("cls");
welcome();
}/*
if(x==p&&y==q) {
system("cls");
cout<<"You're Win";
return 0;
char a[10][10]={{"########"},
{"### ####"},
{"###0####"},
{"### o0 #"},
{"# 0 ###"},
{"####0###"},
{"#### ###"},
{"########"}};
}*/
}
}
第四步,创建开始界面:
void welcome(){
int a;
system("cls");
cout<<"\n\n推箱子小游戏"<<endl<<endl;
cout<<" 0 |----| 1.开始游戏"<<endl;
cout<<"(||) |0000| 2.游戏规则"<<endl;
cout<<"╝╚ |0000|"<<endl;
cin>>a;
if(a==1)
{
system("cls");
move();
}
else if(a==2)
{
system("cls");
cout<<"推箱子规则:"<<endl;
cout<<"通过w、s、a、d来进行控制小人移动,已达到将所有箱子(0)\d推入传送点(6)的目的。"<<endl;
cout<<"在游戏中可以按q来返回主界面。。。";
cout<<"按1以返回。。。";
cin>>a;
if(a==1)
{
welcome();
}
}
第五步,输出地图:
void print() {
for(int i=0; i<10; i++) {
puts(a[i]);
}
}
最后一步,主函数调用自定义函数:
int main() {
MessageBox(0, "欢迎来到推箱子小游戏\n\n制作:火龙果殿下", "系统", MB_OK);
welcome();
return 0;
}
完整代码:
#include<iostream>
#include<cstring>
#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
using namespace std;
/*
char m[7][12]= {{"###########"},
{"#o # ###"},
{"# ## ## #"},
{"# # # #"},
{"# #### ## #"},
{"# # "},
{"###########"}
};*/
char a[10][10]={{" ### "},
{" #6# "},
{" #0####"},
{"### o06#"},
{"#60 ###"},
{"####0# "},
{" #6# "},
{" ### "}};
void move();
void welcome(){
int a;
system("cls");
cout<<"\n\n推箱子小游戏"<<endl<<endl;
cout<<" 0 |----| 1.开始游戏"<<endl;
cout<<"(||) |0000| 2.游戏规则"<<endl;
cout<<"╝╚ |0000|"<<endl;
cin>>a;
if(a==1)
{
system("cls");
move();
}
else if(a==2)
{
system("cls");
cout<<"推箱子规则:"<<endl;
cout<<"通过w、s、a、d来进行控制小人移动,已达到将所有箱子(0)\d推入传送点(6)的目的。"<<endl;
cout<<"在游戏中可以按q来返回主界面。。。";
cout<<"按1以返回。。。";
cin>>a;
if(a==1)
{
welcome();
}
}
}
void print() {
for(int i=0; i<10; i++) {
puts(a[i]);
}
}
void move(){
int x,y,p,q;
x=3;
y=4;
p=5;
q=10;
char ch;
print();
while(1) {
ch=getch();
if(ch=='s') {
if(a[x+1][y]!='#'&&a[x+1][y]=='0')
{
a[x+2][y]='0';
a[x][y]=' ';
a[x+1][y]='o';
}
if(a[x+1][y]!='#') {
a[x][y]=' ';
x++;
a[x][y]='o';
system("cls");
print();
}
}
if(ch=='w') {
if(a[x-1][y]!='#'&&a[x-1][y]=='0')
{
a[x-2][y]='0';
a[x][y]=' ';
a[x-1][y]='o';
}
if(a[x-1][y]!='#') {
a[x][y]=' ';
x--;
a[x][y]='o';
system("cls");
print();
}
}
if(ch=='a') {
if(a[x][y-1]!='#'&&a[x][y-1]=='0')
{
a[x][y-2]='0';
a[x][y]=' ';
a[x][y-1]='o';
}
if(a[x][y-1]!='#') {
a[x][y]=' ';
y--;
a[x][y]='o';
system("cls");
print();
}
}
if(ch=='d') {
if(a[x][y+1]!='#'&&a[x][y+1]=='0')
{
a[x][y+2]='0';
a[x][y]=' ';
a[x][y+1]='o';
}
if(a[x][y+1]!='#') {
a[x][y]=' ';
y++;
a[x][y]='o';
system("cls");
print();
}
}
if(a[1][3]=='0'&&a[6][4]=='0'&&a[4][1]=='0'&&a[3][6]=='0')
{
system("cls");
cout<<"You're Win";
break;
}
if(ch=='q')
{
system("cls");
welcome();
}/*
if(x==p&&y==q) {
system("cls");
cout<<"You're Win";
return 0;
char a[10][10]={{"########"},
{"### ####"},
{"###0####"},
{"### o0 #"},
{"# 0 ###"},
{"####0###"},
{"#### ###"},
{"########"}};
}*/
}
}
int main() {
MessageBox(0, "欢迎来到推箱子小游戏\n\n制作:火龙果殿下", "系统", MB_OK);
welcome();
return 0;
}
本篇就到这里啦,如果大家还想学其他的小游戏的话,请在评论区里留言,火龙果会努力编程的!
886~