小游戏awa

第一种

给粉丝的awa

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
struct note{
     char a[105];
    int hp;
int gj;
};
int s;
note player[100];
int hit1,hit2,k,g[11],pdh1=0,pdh2=0,n;
void shuru();
void gj();
void youxi();
void slowsay(char a[]){
     for(int i=0;i<strlen(a);i++){
    cout<<a[i];
        Sleep(25);
    }
}
int main(){
     srand((unsigned)time(NULL));
     slowsay("欢迎来到名字竞技场 by Steve_bm");
     cout<<endl;
     slowsay("V 1.2");
     cout<<endl;
    cout<<"请输入人数:";
cout<<"人数不能小于2!"<<endl;  
cin>>n;
shuru();
     youxi();
     return 0;
}
void gj(){
     int op1,op2;
     op1=rand()%n+1;
     op2=rand()%n+1;
     if((op1==op2)||(player[op1].hp==0||player[op2].hp==0)){
    while(1){
        op1=rand()%n+1;
            op2=rand()%n+1;
            if((op1!=op2)&&(player[op1].hp!=0&&player[op2].hp!=0)) break;
        }
    }
hit1=rand()%player[op1].gj+1;
k=player[op2].hp;
    player[op2].hp-=hit1;
 
     cout<<player[op1].a<<"对"<<player[op2].a<<"发起了攻击/<-_->\\"<<endl;
     Sleep(500);
     if(hit1>=((player[op1].gj/3)*2)){
     cout<<player[op1].a<<"暴击!!!\\[^.^]/"<<endl;
player[op2].hp-=hit1;
player[op2].hp-=hit1;
hit1=hit1*3;} 
    cout<<player[op2].a<<"受到了"<<hit1<<"点伤害!<[T^T]>";
     Sleep(250);
     cout<<player[op2].a<<"的生命值:"<<k<<"下降了"<<hit1<<"!!!|(o^O)|<---|-"<<endl;
     cout<<player[op2].a<<"现在的生命值剩余"<<player[op2].hp;  
     if(player[op2].hp<=0) player[op2].hp=0;  
     if(player[op2].hp<=0){
s++;
    cout<<endl<<player[op2].a<<"倒下了!!!\\(*_*)/"<<endl<<"死亡"<<s<<"人";
    } 
}
void youxi(){
    Sleep(1200);
    for(int t=1;t<=n;t++){
         int n1=player[t].a[0]+200;
         int q1=player[t].a[strlen(player[t].a)-1];
         player[t].hp=(rand()%n1+30)*9;
        player[t].gj=(rand()%q1+30)*7;
    }
system("cls");
    for(int b=1;b<=n;b++){
         cout<<player[b].a<<" "<<"HP:"<<player[b].hp<<" "<<"攻击力:"<<player[b].gj<<endl;
         cout<<endl;
    }
     cout<<endl;
     Sleep(3000);
     cout<<3<<endl<<endl<<endl;
     cout<<2<<endl<<endl<<endl;
     cout<<1<<endl<<endl<<endl;
     cout<<"现在开始!"<<endl<<endl<<endl;
     Sleep(1500);
     int w;
    int f=0;
while(1){
    gj();
        Sleep(1000);
         cout<<endl;
         for(int i=1;i<=n;i++){
            if(player[i].hp==0) f++;
        if(player[i].hp>0) w=i;
    }
        if(f==n-1) break;
f=0;
}
    Sleep(1500);
     cout<<"胜利者是";
cout<<player[w].a<<"!"<<endl;  
for(int m=1;m<=n;m++){
         if(player[m].hp==0){
         cout<<player[m].a<<"第"<<m+1<<"名"<<endl;
        }
    }
    
    char l;
     Sleep(3000);
     cout<<"Do you want to play again?(Y/N)(jia de!!!)"<<endl;
     cin>>l;
    if(l=='Y'||l=='y'){youxi();
system("cls");
    for(int h=1;h<=n;h++){
        memset(player[h].a,0,sizeof(player[h].a));
         }
        
    }
    else{
        exit(0);
    }
}
void shuru(){
    for(int l=1;l<=n;l++){
        cout<<"请输入玩家"<<l<<"的名字(名字不超过10字符,最小3字符,不能有汉字!):"<<endl;
    scanf("%s",player[l].a);
    }
    int yy[11]={0};
    for(int i=1;i<n;i++){
        for(int o=i+1;o<=n;o++){
            for(int q=0;q<strlen(player[i].a);q++){
                if(player[i].a[q]==player[o].a[q]) yy[i]++;
            }
        }
    }
    for(int u=1;u<=n;u++){
        if(yy[u]==strlen(player[u].a)){
            system("cls");
              cout<<"输入的名字不能相同!"<<endl;
               Sleep(100);
               cout<<"请重新输入!"<<endl;
              shuru();
        }
        else youxi();
    }
}
### C# 中 `async` 和 `await` 的基本概念 在编程中,异步操作是一种常见的需求,尤其是在处理 I/O 密集型任务时。C# 提供了一种简洁的方式来实现异步编程——通过 `async` 和 `await` 关键字。 #### 定义与功能 当方法被标记为 `async` 时,它允许在其内部使用 `await` 来等待另一个异步操作完成而不阻塞当前线程[^1]。这使得程序可以继续执行其他任务,直到异步操作返回结果为止。 ```csharp public async Task<int> DelayAndReturn() { await Task.Delay(1000); // 模拟耗时操作 return 42; } ``` 上述代码展示了如何定义一个简单的异步函数。该函数会延迟一秒后再返回整数值 `42`。 #### 处理可能的异常情况 需要注意的是,在某些情况下直接使用 `await` 可能会引起未捕获的异常。例如,如果尝试在一个不支持的任务上下文中调用非标准类型的异步实例,则会发生错误: ```csharp var maybeResult = new Maybe(); // 假设这是一个自定义类型 try { var result = await maybeResult; // 如果Maybe类没有适配Task模式,这里将抛出异常 } catch (Exception ex) { Console.WriteLine($"Error occurred: {ex.Message}"); } ``` 此片段说明了为何需要特别注意所使用的对象是否真正实现了可等待接口或结构体。 --- ### 结合实际应用案例分析 假设我们有一个场景:从数据库检索数据的同时还需要向第三方服务请求额外的信息。这两个过程都可以独立运行而无需相互依赖,因此非常适合采用异步方式来提高效率。 ```csharp public class DataService { public async Task<string> FetchDataAsync(string id) { string dbResponse = await SimulateDbCall(id); string apiResponse = await CallExternalApi(); return $"Database Response: {dbResponse}, API Response: {apiResponse}"; } private static Task<string> SimulateDbCall(string id) => Task.FromResult($"Item-{id}"); private static Task<string> CallExternalApi() => Task.FromResult("External Data"); } // 调用示例 DataService service = new DataService(); string combinedResults = await service.FetchDataAsync("123"); Console.WriteLine(combinedResults); ``` 在这里可以看到两个不同的异步源被有效组合起来形成最终输出。 --- ### 注意事项及调试技巧 尽管引入了更直观的操作符简化开发流程,但在复杂项目里仍然可能出现难以追踪的问题。为此建议遵循良好实践如单元测试覆盖重要逻辑路径以及利用现代IDE内置诊断特性辅助定位潜在缺陷[^3]。 另外值得注意的一点是关于状态管理方面,由于多个并发活动可能存在竞争条件风险所以应当谨慎对待共享资源访问控制机制的设计决策。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值