| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2450 人关注过本帖, 1 人收藏
标题:我用C++做了个沙盒游戏
只看楼主 加入收藏
ghost_no_eq
Rank: 2
等 级:论坛游民
威 望:3
帖 子:7
专家分:30
注 册:2021-12-8
收藏(1)
 问题点数:0 回复次数:5 
我用C++做了个沙盒游戏
给大家送游戏了~
操作方法:
使用cin输入,每步操作后需按回车
WASD移动,P放置
移动到字符'w'的位置一获得木头
当你放置足够的木板后你就赢了
有环境的人可以启用\033和system("clr")
上代码(直接复制到Dev-c++):

切记!bccn的运行系统会编译超时!
程序代码:

#include <bits/stdc++.h>
#include <cstdlib>
#include <time.h>
#include <cmath>
#include <iostream>
#include <fstream>
#include <unistd.h>
bool isLinux033=0;
using namespace std;

long long h=19,l=1,w=0,xp=0;

//' '=水,'P'=玩家,'W'=木板



char setting_a[1024][1024];

int player_x=511;
int player_y=511;

int player_d='W';
int main(){
    setting_a[511][511]='P';
    setting_a[511][512]='W';
    setting_a[512][511]='W';
    setting_a[512][512]='W';
    srand(time(NULL));
    FIRST:
    cout<<"欢迎来到木筏求生"<<endl;
    cout<<"全部代码均由ghost_no_eq编写"<<endl;
    cout<<"按[S]键开始游戏..."<<endl;
    while(1){
        char tmp;
        cin>>tmp; 
        if(tmp=='s' || tmp=='S') goto GAME;
    }
    GAME:
    int setting_difficulty;
    int setting_maxx;
    int setting_maxy;
    cout<<"请输入显示页面的宽度(想通关请输入1~2,试玩可输入3~8)<<)";
    cin>>setting_maxx;
    cout<<"请输入显示页面的高度(想通关请输入1~2,试玩可输入3~8)<<)";
    cin>>setting_maxy;
    cout<<"请输入游戏难度(简单1~20,普通21~80,困难81~100))";
    cin>>setting_difficulty;
    setting_difficulty+=20;
    int iswin=0;
    int ans;
    while(h>0){
        ans++;
        if(l>63){
            iswin++;
            break;
        }
        
        h++;
        if(xp/l>0){
            l+=xp/l;
            xp=(xp+1)%l;
        }
        cout<<endl;
        for(int i=player_x-setting_maxx;i<player_x+setting_maxx;i++){
            for(int j=player_y-setting_maxy;j<player_y+setting_maxy;j++){
                if((i==player_x-setting_maxx || i==player_x+setting_maxx-1)|| (j==player_y-setting_maxy || j==player_y+setting_maxy-1)){
                    if(rand()%setting_difficulty==0){
                        if(setting_a[i][j]=='\0'){
                            setting_a[i][j]='w';
                        }
                    }
                }
                switch(setting_a[i][j]){
                    case 'W':
                        if(isLinux033) cout<<"\033[31;43m";
                        cout<<"W";
                        if(isLinux033) cout<<"\033[0m";
                        break;
                    case '\0':
                        if(isLinux033) cout<<"\033[44m";
                        cout<<" ";
                        if(isLinux033) cout<<"\033[0m";
                        break;
                    case 'P':
                        if(isLinux033) cout<<"\033[7m";
                        cout<<"P";
                        if(isLinux033) cout<<"\033[0m";
                        break;
                    case 'w':
                        if(isLinux033) cout<<"\033[33;44m";
                        cout<<"w";
                        if(isLinux033) cout<<"\033[0m";
                        break;
                    default:
                        if(isLinux033) cout<<"\033[45m";
                        cout<<"?";
                        if(isLinux033) cout<<"\033[0m";
                        break;
                }
            }
            cout<<endl;
        }
        for(int i=0;i<2*setting_maxx;i++){
            cout<<"=";
        }
        if(player_d=='\0'){
            cout<<endl<<"您正在消耗体力,请尽快回到木筏上回血!";
            h-=3;
        }
        if(player_d=='w'){
            cout<<endl<<"您获得了一块木头!";
            player_d='\0';
            w++;
        }
        cout<<endl<<"HP:"<<h<<" WOOD:"<<w<<" LEVEL:"<<l<<" XP:"<<xp<<" TIME:"<<ans;
        char tmp='\0';
        while(tmp=='\0'){
            cin>>tmp;
            switch(tmp){
                case 'w':
                    setting_a[player_x][player_y]=player_d;
                    player_x--;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 'W':
                    setting_a[player_x][player_y]=player_d;
                    player_x--;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 'a':
                    setting_a[player_x][player_y]=player_d;
                    player_y--;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 'A':
                    setting_a[player_x][player_y]=player_d;
                    player_y--;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 's':
                    setting_a[player_x][player_y]=player_d;
                    player_x++;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 'S':
                    setting_a[player_x][player_y]=player_d;
                    player_x++;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 'd':
                    setting_a[player_x][player_y]=player_d;
                    player_y++;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 'D':
                    setting_a[player_x][player_y]=player_d;
                    player_y++;
                    player_d=setting_a[player_x][player_y];
                    setting_a[player_x][player_y]='P';
                    break;
                case 'p':
                    if(w>0 && player_d!='W'){
                        player_d='W';
                        w--;
                        xp++;
                    }
                    break;
                case 'P':
                    if(w>0 && player_d!='W'){
                        player_d='W';
                        w--;
                        xp++;
                    }
                    break;
            }
        }
    }
    if(iswin==0){
        cout<<"您因为没有体力而被水淹没了!";
        return 0;
    }
    else{
        cout<<"防假速通验证码."<<setting_difficulty*ans+pow(ans%3+2,setting_difficulty%10)<<".";
        cout<<"\n您通关了!您的难度为:"<<setting_difficulty-20<<" 您的用时为:"<<ans<<"";
    } 
    return 0;
}


[此贴子已经被作者于2021-12-9 19:30编辑过]

搜索更多相关主题的帖子: break xp cout case int 
2021-12-09 19:29
程序员yu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-27
收藏
得分:0 
回复 楼主 ghost_no_eq
设计的不错
但是使用的输入而不是键盘按键
可以用<conio.h>里的getch()函数
2021-12-27 19:38
合适的话
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-7-14
收藏
得分:0 
2022-07-14 12:57
chenyucheng
Rank: 3Rank: 3
来 自:浙江省台州市临海市
等 级:论坛游侠
威 望:3
帖 子:141
专家分:181
注 册:2022-7-1
收藏
得分:0 
#include <bits/stdc++.h> 是什么鬼?(?_?)

爱玩编程的小学生,有Python,但只会一点点C++。

版主->斑竹->竹子,所以版主是竹子。(doge)
//不要让我当版主
2022-07-31 21:02
op123
Rank: 6Rank: 6
等 级:贵宾
威 望:21
帖 子:170
专家分:461
注 册:2022-6-4
收藏
得分:0 
回复 4楼 chenyucheng
就是DEVC++的万能头文件,平时用的头文件,可以用这一个头文件来代替(除了#include<windows.h>)
2022-08-19 19:13
iuyt
Rank: 1
来 自:山东东营
等 级:新手上路
威 望:1
帖 子:14
专家分:0
注 册:2023-8-14
收藏
得分:0 
回复 4楼 chenyucheng
万能头文件

c++新手一枚,拜师中,有意者发短信或加好友
2023-08-14 10:55
快速回复:我用C++做了个沙盒游戏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045233 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved