好的,以下是以C语言编写的满足您设定的程序:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef enum { 
    GARBAGE, SMALL_PART, DAMAGED_BOOT, DAMAGED_CPU, HEART_NECKLACE, AMMO_BOX, MAP, DIRT,
    GOLD_BRICK, GOLD_INGOT, LENS, CPU_PROCESSOR, MUTATED_SHOULDER_BONE, BLUEPRINT, CPU_SMALL_PROCESSOR, TECH_PART,
    TABLET, LOST_DOG_TAG, MONEY_BOX, FRYING_PAN, MAJOR_COMPONENT, COAT
} Item;

typedef struct { 
    Item items[4];
    int count;
} Box;

void initialize(Box* box) {
    int i;
    box->count = 0;
    for (i = 0; i < 4; i++) {
        box->items[i] = GARBAGE;
    }
}

Item getRandomItem() {
    int random = rand() % 100;
    if (random < 5) return GOLD_BRICK;
    if (random < 15) return GOLD_INGOT;
    if (random < 25) return LENS;
    if (random < 35) return CPU_PROCESSOR;
    if (random < 45) return MUTATED_SHOULDER_BONE;
    if (random < 55) return BLUEPRINT;
    if (random < 65) return CPU_SMALL_PROCESSOR;
    if (random < 75) return TECH_PART;
    if (random < 85) return TABLET;
    if (random < 95) return LOST_DOG_TAG;
    if (random < 100) return MONEY_BOX;
    return GARBAGE;
}

void searchBox(Box* box) {
    int i;
    printf("正在搜索箱子...
");
    for (i = 0; i < 5; i++) {
        printf("%d秒...
", 5 - i);
        sleep(1);
    }
    printf("找到一个箱子!
");
    for (i = 0; i < 4; i++) {
        box->items[i] = getRandomItem();
    }
    box->count = rand() % 3 + 2;
}

void printItem(Item item) {
    switch (item) {
        case GARBAGE:
            printf("垃圾
");
            break;
        case SMALL_PART:
            printf("小零件
");
            break;
        case DAMAGED_BOOT:
            printf("小靴子破损
");
            break;
        case DAMAGED_CPU:
            printf("破损的CPU
");
            break;
        case HEART_NECKLACE:
            printf("爱心项链
");
            break;
        case AMMO_BOX:
            printf("子弹盒
");
            break;
        case MAP:
            printf("地图
");
            break;
        case DIRT:
            printf("泥土
");
            break;
        case GOLD_BRICK:
            printf("金砖
");
            break;
        case GOLD_INGOT:
            printf("金条
");
            break;
        case LENS:
            printf("镜头
");
            break;
        case CPU_PROCESSOR:
            printf("CPU处理器
");
            break;
        case MUTATED_SHOULDER_BONE:
            printf("变异的肩骨
");
            break;
        case BLUEPRINT:
            printf("蓝图
");
            break;
        case CPU_SMALL_PROCESSOR:
            printf("CPU小处理器
");
            break;
        case TECH_PART:
            printf("科技部件
");
            break;
        case TABLET:
            printf("平板电脑
");
            break;
        case LOST_DOG_TAG:
            printf("遗失的狗牌
");
            break;
        case MONEY_BOX:
            printf("鼓鼓的现金盒
");
            break;
        case FRYING_PAN:
            printf("平底锅
");
            break;
        case MAJOR_COMPONENT:
            printf("大部件零件
");
            break;
        case COAT:
            printf("外套
");
            break;
    }
}

void openBox(Box* box) {
    if (box->count == 0) {
        printf("箱子是空的!
");
        return;
    }

    printf("正在打开箱子...
");
    printf("找到了以下物品:
");

    int i;
    for (i = 0; i < box->count; i++) {
        printf("- ");
        printItem(box->items[i]);
    }

    initialize(box);
}

int main() {
    srand(time(NULL));
    int points = 10000;
    Box box;

    while (1) {
        printf("
选择一个选项:
");
        printf("1. 进行五秒内搜查
");
        printf("2. 花费10点券立即打开箱子
");
        printf("3. 退出游戏
");

        int choice;
        scanf("%d", &choice);

        switch (choice) {
            case 1: {
                if (points < 10) {
                    printf("点券不足!
");
                    break;
                }
                searchBox(&box);
                points -= 10;
                printf("剩余点券:%d
", points);
                break;
            }
            case 2: {
                if (points < 10) {
                    printf("点券不足!
");
                    break;
                }
                openBox(&box);
                points -= 10;
                printf("剩余点券:%d
", points);
                break;
            }
            case 3:
                printf("退出游戏。
");
                return 0;
            default:
                printf("无效的选项!
");
                break;
        }
    }

    return 0;
}

请注意,此程序是一个简单的文本界面程序,用于演示您提供的设定。它依据你的选择操作箱子,并模拟了搜查箱子和打开箱子时的随机物品生成。此程序仅供参考,您可以根据自己的需求进行修改和扩展。

C语言摸箱子游戏:随机道具,等级判定,点券系统

原文地址: https://www.cveoy.top/t/topic/TN4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录