编辑代码

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

int main() {
    int current; // 当前数值
    int choice;  // 玩家选择
    int multiplier; // 乘数
    int diamonds = 0; // 钻石总数
    int addValue; // 每轮增加的值
    int gameOver = 0; // 游戏结束标志
    
    // 初始化随机数种子
    srand(time(0));
    
    printf("欢迎来到西瓜大王游戏!\n");
    printf("规则:\n");
    printf("1. 初始选择一个1-10之间的数字\n");
    printf("2. 每轮会随机增加1或2\n");
    printf("3. 每轮有机会乘以一个正整数\n");
    printf("4. 达到特定分数可获得钻石:\n");
    printf("   25分 -> 1颗钻石\n");
    printf("   50分 -> 2颗钻石\n");
    printf("   75分 -> 3颗钻石\n");
    printf("   100分 -> 4颗钻石\n");
    printf("5. 超过100分游戏结束并结算\n\n");
    
    // 获取初始数字
    do {
        printf("请输入初始数字(1-10): ");
        scanf("%d", &choice);
        if(choice < 1 || choice > 10) {
            printf("无效输入!请输入1-10之间的数字。\n");
        }
    } while(choice < 1 || choice > 10);
    
    current = choice;
    printf("初始数字: %d\n", current);
    
    // 检查初始值是否达到钻石条件
    if(current == 25 || current == 50 || current == 75 || current == 100) {
        int newDiamonds = 0;
        if(current == 25) newDiamonds = 1;
        else if(current == 50) newDiamonds = 2;
        else if(current == 75) newDiamonds = 3;
        else if(current == 100) newDiamonds = 4;
        
        diamonds += newDiamonds;
        printf("恭喜!初始值达到%d分,获得%d颗钻石!\n", current, newDiamonds);
    }
    
    // 游戏主循环
    while(!gameOver) {
        // 随机增加1或2
        addValue = rand() % 2 + 1; // 生成1或2
        current += addValue;
        printf("\n本轮增加: %d, 当前数值: %d\n", addValue, current);
        
        // 检查是否达到钻石条件
        int newDiamonds = 0;
        if(current == 25) newDiamonds = 1;
        else if(current == 50) newDiamonds = 2;
        else if(current == 75) newDiamonds = 3;
        else if(current == 100) newDiamonds = 4;
        
        if(newDiamonds > 0) {
            diamonds += newDiamonds;
            printf("★★★★★ 达到%d分,获得%d颗钻石!★★★★★\n", current, newDiamonds);
        }
        
        // 检查是否超过100
        if(current > 100) {
            gameOver = 1;
            printf("超过100分!游戏结束!\n");
            break;
        }
        
        // 获取乘数
        do {
            printf("请输入乘数(正整数,输入0跳过): ");
            scanf("%d", &multiplier);
            
            if(multiplier < 0) {
                printf("请输入正整数或0!\n");
            } else if(multiplier == 0) {
                printf("跳过乘法操作。\n");
                break;
            } else if(multiplier == 1) {
                printf("乘以1,数值不变。\n");
                break;
            } else {
                int prev = current;
                current *= multiplier;
                printf("乘以 %d, 当前数值: %d\n", multiplier, current);
                
                // 乘法后检查钻石条件
                newDiamonds = 0;
                if(current == 25) newDiamonds = 1;
                else if(current == 50) newDiamonds = 2;
                else if(current == 75) newDiamonds = 3;
                else if(current == 100) newDiamonds = 4;
                
                if(newDiamonds > 0) {
                    diamonds += newDiamonds;
                    printf("★★★★★ 达到%d分,获得%d颗钻石!★★★★★\n", current, newDiamonds);
                }
                
                // 乘法后检查是否超过100
                if(current > 100) {
                    gameOver = 1;
                    printf("超过100分!游戏结束!\n");
                }
                break;
            }
        } while(1); // 循环直到输入有效
    }
    
    // 游戏结束,结算钻石
    printf("\n游戏结束!最终得分: %d\n", current);
    printf("获得的钻石总数: %d\n", diamonds);
    
    // 根据钻石数量显示评价
    if(diamonds >= 10) {
        printf("★★★★★ 钻石大王!太厉害了!★★★★★\n");
    } else if(diamonds >= 7) {
        printf("★★★★ 钻石专家!表现优异!★★★★\n");
    } else if(diamonds >= 4) {
        printf("★★★ 钻石收藏家!不错的成绩!★★★\n");
    } else if(diamonds >= 1) {
        printf("★★ 钻石新手!继续努力!★★\n");
    } else {
        printf("☆ 没有获得钻石,下次加油!☆\n");
    }
    
    return 0;
}