打怪C++代码

  I打怪

问题描述

在一款电脑游戏中,你需要打败n只怪物(从1到n编号)。
为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值。任何时候你的生命值都不能降到0(或0以下)。
请问是否存在一种打怪顺序,使得你可以打完这n只怪物而不死掉

输入格式

第一行两个整数n,z(1<=n,z<=100000),分别表示怪物的数量和你的初始生命值。
接下来n行,每行两个整数d[i],a[i]
d[i],a[i] <=50000

输出格式

一行为TAK(是)或NIE(否),表示是否存在这样的顺序。

样例输入

3 5
3 1
4 8
8 3

样例输出

TAK  

#include<bits/stdc++.h>
using namespace std;
struct node{
	int x;
	int y;
}a[100005],b[100005];
bool cmp1(node a,node b){
	return a.x<b.x;
}
bool cmp2(node a,node b){ 
	return a.y>b.y;
}
long long n,z,aa=0
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 C++ 打小游戏代码示例: ```c++ #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h> using namespace std; // 定义玩家和物的属性 int player_hp = 100; int player_attack = 10; int player_defense = 5; int monster_hp = 50; int monster_attack = 8; int monster_defense = 3; // 定义游戏地图和场景 char map[10][10] = { {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'}, {'#', '.', '.', '.', '.', '.', '.', '.', '.', '#'}, {'#', '.', '#', '#', '#', '#', '.', '#', '.', '#'}, {'#', '.', '.', '.', '.', '.', '.', '#', '.', '#'}, {'#', '.', '#', '#', '#', '.', '#', '#', '.', '#'}, {'#', '.', '.', '.', '#', '.', '.', '.', '.', '#'}, {'#', '#', '#', '.', '#', '#', '#', '#', '.', '#'}, {'#', '.', '.', '.', '.', '.', '.', '.', '.', '#'}, {'#', '.', '#', '#', '#', '#', '.', '#', '.', '#'}, {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'} }; // 定义玩家和物的位置 int player_x = 1; int player_y = 1; int monster_x = 3; int monster_y = 5; // 定义游戏结束标志 bool game_over = false; // 函数声明 void draw_map(); void move_player(char dir); void move_monster(); void check_collision(); void check_game_over(); int main() { // 初始化随机数种子 srand(time(NULL)); // 显示游戏地图和玩家位置 draw_map(); // 游戏循环 while (!game_over) { // 玩家移动 char dir = getch(); move_player(dir); // 物移动 move_monster(); // 检测碰撞和战斗 check_collision(); // 检测游戏结束 check_game_over(); } return 0; } // 绘制游戏地图和玩家位置 void draw_map() { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i == player_y && j == player_x) { cout << 'P'; } else if (i == monster_y && j == monster_x) { cout << 'M'; } else { cout << map[i][j]; } } cout << endl; } } // 玩家移动 void move_player(char dir) { int new_x = player_x; int new_y = player_y; switch (dir) { case 'w': new_y--; break; case 's': new_y++; break; case 'a': new_x--; break; case 'd': new_x++; break; default: break; } // 检测新位置是否合法 if (map[new_y][new_x] != '#') { player_x = new_x; player_y = new_y; } } // 物移动 void move_monster() { int dir = rand() % 4; int new_x = monster_x; int new_y = monster_y; switch (dir) { case 0: new_y--; break; case 1: new_y++; break; case 2: new_x--; break; case 3: new_x++; break; default: break; } // 检测新位置是否合法 if (map[new_y][new_x] != '#') { monster_x = new_x; monster_y = new_y; } } // 检测碰撞和战斗 void check_collision() { if (player_x == monster_x && player_y == monster_y) { // 计算伤害和防御 int damage_to_monster = player_attack - monster_defense; int damage_to_player = monster_attack - player_defense; // 更新血量 player_hp -= damage_to_player; monster_hp -= damage_to_monster; // 输出战斗结果 cout << "You hit the monster for " << damage_to_monster << " damage." << endl; cout << "The monster hit you for " << damage_to_player << " damage." << endl; } } // 检测游戏结束 void check_game_over() { if (player_hp <= 0) { cout << "You died. Game over." << endl; game_over = true; } else if (monster_hp <= 0) { cout << "You killed the monster. You win!" << endl; game_over = true; } } ``` 这个示例代码使用了基本的 C++ 语法和函数,包括数组、循环、条件语句、随机数、键盘输入等等。您可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值