C++如何做简单游戏

我们的头文件一定要有iostream和cstdio两个头文件,不然会报错哦!

今天我们来设置一个星号可以在一个井号方框里上下左右移动的简单游戏

1:绘制游戏地图(*为游戏角色),首先我们要定义一个char型的二维数组,如下:

char a[100][100]={
        "######",
        "#*   #",
        "#    #",
        "######",
    };

接着,我们要把它打出来,那么有些人肯定说用两个for循环,再cout<<a[i][j]对不对?,but,我们有一个函数:puts,它的头文件是cstdio,它的意思就是:打完一行换一行

for(int i=0;i<=10;i++)
        puts(a[i]);

上打出地图的代码:

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    char a[100][100]={
        "######",
        "#*   #",
        "#    #",
        "######",
    };
    for(int i=0;i<=10;i++)
        puts(a[i]);

移动角色,这下有人说一定要用什么高级的函数了吧?不!我们一点也不需要这些

我们移动角色的原理:每输出一个移动键就重绘一下画面,是不是听起来简单多了?那么,就开始欢乐的敲代码时间吧!

首先,我们定义一个记录角色坐标的横坐标x,纵坐标y

int x=1,y=1;

我们要定义一个char变量,然后电脑会判断你按的是什么键,然后绘出什么样的图,在这里,我们w上,s下,a左,d右,但是,如何让框上不显示并且不按回车你打入的按键呢?这个时候我们就有需要一个简单函数——getch了

变量名=_getch();

有一个问题来了:怎么实现移动?

很简单,我上一段左移代码,你就基本懂了!

if(ch=='a'){
    if(a[x][y-1]!='#'){
        a[x][y]=' ';
        y--;
        a[x][y]='*';
    }
}

我们只要调用system,再打个括号,输入特定的代码,即可达到清除之前画面的效果,还要记住,他有一个头文件:windows.h,看代码:

system("cls");

再用之前的方法绘出画面

for(int i=0;i<=10;i++)
        puts(a[i]);

先把目前的代码放出来

#include <iostream>
#include <cstdio>
#include <conio.h>
#include <windows.h>
using namespace std;
int main(){
    char a[100][100]={
        "######",
        "#*   #",
        "#    #",
        "######",
    };
    for(int i=0;i<=10;i++)
        puts(a[i]);
    char ch;
    int x=1,y=1;
    ch=_getch();
    if(ch=='a'){
        if(a[x][y-1]!='#'){
            a[x][y]=' ';
            y--;
            a[x][y]='*';
        }
    }
    if(ch=='s'){
        if(a[x+1][y]!='#'){
            a[x][y]=' ';
            x++;
            a[x][y]='*';
        }
    }
    if(ch=='d'){
        if(a[x][y+1]!='#'){
            a[x][y]=' ';
            y++;
            a[x][y]='*';
        }
    }
    if(ch=='w'){
        if(a[x-1][y]!='#'){
            a[x][y]=' ';
            x--;
            a[x][y]='*';
        }
    }
    system("cls");
    for(int i=0;i<=10;i++)
        puts(a[i]);
}

运行后,我们发现之能移动一次就停了,所以要加上死循环:while(1)

然后,你可以在代码前面再打一个system(“title 移动小游戏”);

会有惊喜哦!

最后,打上retrun 0;小游戏就完成了!(p≧w≦q)

最后,放上全代码:

#include <iostream>
#include <cstdio>
#include <conio.h>
#include <windows.h>
using namespace std;
int main(){
    system("title 移动小游戏");
    char a[100][100]={
        "######",
        "#*   #",
        "#    #",
        "######",
    };
    for(int i=0;i<=10;i++)
        puts(a[i]);
    char ch;
    int x=1,y=1;
    while(1){
        ch=_getch();
        if(ch=='a'){
            if(a[x][y-1]!='#'){
                a[x][y]=' ';
                y--;
                a[x][y]='*';
            }
        }
        if(ch=='s'){
            if(a[x+1][y]!='#'){
                a[x][y]=' ';
                x++;
                a[x][y]='*';
            }
        }
        if(ch=='d'){
            if(a[x][y+1]!='#'){
                a[x][y]=' ';
                y++;
                a[x][y]='*';
            }
        }
        if(ch=='w'){
            if(a[x-1][y]!='#'){
                a[x][y]=' ';
                x--;
                a[x][y]='*';
            }
        }
        system("cls");
        for(int i=0;i<=10;i++)
            puts(a[i]);
    }
    return 0;
}

是不是觉得编游戏没那么难了?希望对你有用哦~~

原文链接: https://www.cnblogs.com/xgua-0818/p/16250712.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/189074

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午2:37
下一篇 2023年2月12日 下午2:37

相关推荐