C++ 打怪小游戏3.1

想要之前的版本可自行在我的博客中查看或去到我的个人博客:GARS 的个人博客

个人博客更新较快(因为不用审核)(其实也快不了多少)

更新内容:

首个治疗技能上线

首个加强技能上线

上述技能可在村庄修炼概率获得

BUG修复:

修复了技能名及效果与技能不匹配的情况

上代码:

#include "heads.h"
#include "io.h"
typedef long long ll;
string weapon[10] = {"木剑" , "石剑" , "铁剑" , "钻石剑" , "下界合金剑" , "寰宇支配之剑" , "乱码剑" , "五彩斑斓剑" , "深渊剑" , "氪金萝莉"};
string skillname[8] = {"无技能","狂暴旋风","雷霆万钧","冰封千里","阴晦之气","金锋之光","烈火涅槃","狂啸之怒"};
string skilleffect[8] = {"无","无","无","无","阴晦","耀光","涅槃","怒吼"};
string skille[8] = {"无","无","无","无","攻击减100000","攻击减200000","加血30000","下一次砍击加100000伤害"};
int s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0;
int skillnum = 0;
int skillenergy[8] = {0,5,15,10,7,8,6,6};
int skillatk[8] = {0,500,1500,1000,0,0,0,0};
int skilln = 0;
void fightmainban () {
	puts ("-----------------------------------------------");
	puts ("                    选择行动                  ");
	puts (" 1、砍击   2、刺击   3、回血   4、逃跑  5、技能");
	puts ("-----------------------------------------------");
}
void skillmianban (int num){
		if (num = 0){
			puts ("-----------------------------------------------");
			puts ("               你没有技能可选择                ");
			puts ("-----------------------------------------------");
		}
		else{
			puts ("-----------------------------------------------------------");
			puts ("                         选择技能                          ");
			puts ("1、狂暴旋风 2、雷霆万钧 3、冰封千里 4、阴晦之气 5、金锋之光");
			puts ("6、烈火涅槃 7、狂啸之怒");
			puts ("-----------------------------------------------------------");
		}
	}
void mianban (int page){
	if (page==1){
		print("<TCF                                                                            >",0xF8,0,0,1);
		print("<TCF  >                                                                        <TCF  >",0xF8,0,1,0);
		print("<TCF  ><TF8                             选择行动                                   ><TCF  >",0xF8,0,2,0);
		print("<TCF  ><TF8 1、战斗:NPC 2、末日机械商店 3、财富积蓄 4、最终目标:末日新生 5、更多 ><TCF  >",0xF8,0,3,1);
		print("<TCF  >                                                        ",0xF8,0,4,1);
		print("<TCF  ><TF8                  选择:                                                ><TCF  >",0xF8,0,4,0);
		print("<TCF  >                                                                        <TCF  >",0xF8,0,5,0);
		print("<TCF                                                                            >",0xF8,0,6,1);
		print("",0xF8,28,4,0);
	}
	else{
		puts("6、抽奖 7、指令 8、进入村庄");
	}
	
}
COORD gets_font_size()
{
    COORD font_size;
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    /* 字体信息 */
    struct CONSOLE_FONT
    {
        DWORD index;
        COORD dim;
    } cfi;
    typedef COORD (WINAPI *PROCGETCONSOLEFONTSIZE)(HANDLE, DWORD);
    typedef BOOL (WINAPI *PROCGETCURRENTCONSOLEFONT)(HANDLE, BOOL, struct CONSOLE_FONT*);

    HMODULE hKernel32 = GetModuleHandle("kernel32");
    PROCGETCONSOLEFONTSIZE GetConsoleFontSize = (PROCGETCONSOLEFONTSIZE)GetProcAddress(hKernel32,"GetConsoleFontSize");
    PROCGETCURRENTCONSOLEFONT GetCurrentConsoleFont = (PROCGETCURRENTCONSOLEFONT)GetProcAddress(hKernel32,"GetCurrentConsoleFont");

    GetCurrentConsoleFont(handle, FALSE, &cfi);             /* 获取当前字体索引信息 */
    font_size = GetConsoleFontSize(handle, cfi.index);      /* 获取当前字体宽高信息[字符宽度及高度所占像素数] */

    return font_size;
}

/*******************************************************************************
 * 最大化展示控制台窗口
 ******************************************************************************/
void full_screen()
{
    HWND hwnd = GetForegroundWindow();
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);   /* 标准输出缓冲区句柄 */
    int cx = GetSystemMetrics(SM_CXSCREEN);            /* 屏幕宽度 */
    int cy = GetSystemMetrics(SM_CYSCREEN);            /* 屏幕高度 */

    COORD size = gets_font_size();
    char cmd[32] = { 0 };
    sprintf(cmd, "MODE CON: COLS=%d LINES=%d", cx / size.X, cy / size.Y);
    system(cmd);
    SetWindowPos(hwnd, HWND_TOP, 0, 0, cx, cy, 0);
}
int main () {
	system("color f0");
	full_screen();
	SetConsoleTitle("GAR 3:末日新生");
	srand ((unsigned)time (NULL));
	int chance = 2 , bloodchance = 2 , pricechange = 2 , hotal = 500 , tmpblood;
	string s;
	ll blood1 = 300000 , atk1 = 300000 , wep = 0;
	ll atk , blood , equipment , money = 0 , experience = 0;
	print("<TFC----------GAR 3:末日新生  <TF5末日机械工作室:GARS> 出品------------------>",0xF8,0,0,10);
	print("<TFC请输入您的名字:>",0xF8,0,1,10);
	print("<TFC--------------------------------------------------------------------->",0xF8,0,2,10);
	print("",0xF8,15,1,0);
	HANDLE handle = ::GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_SCREEN_BUFFER_INFO csbi;
	GetConsoleScreenBufferInfo(handle, &csbi);
	SetConsoleTextAttribute(handle, 0xF9);
	WORD colorOld = csbi.wAttributes;
	s=getstr(16);
	SetConsoleTextAttribute(handle, colorOld);
	if (s == "GARS" || s == "机械贾瑞斯"|| s == "xxz") {
		atk = 99999999;
		blood = 99999999;
		equipment = 99999999;
		money = 99999999999;
		experience = 999999999;
	}
	else if (s == "GARK" || s == "机械贾卡斯"||s=="zxy") {
		atk = 9999999;
		blood = 99999999;
		equipment = 99999999;
		money = 999999999;
		experience = 999999999;
	}
	else {
		atk = rand () % 10 + 99900;
		blood = rand () % 9 + 50000;
		equipment = rand (); 
		tmpblood = blood;
	}
	int bl = 2;
	bool killed = false;
	blood += equipment;
	char buff[150];
	sprintf(buff,"<TF9%s> <TFCatk:>%lld <TFCblood:>%lld <TFCequipment:>%d \n",s.c_str(),atk,blood,equipment,experience);
	print(buff,0xF8,0,3,10);
	char opt;
	while (1) {
i:		Sleep(2000);
		system("cls");
		if (killed) blood = tmpblood;
		int i = 1,page = 1;
		mianban (page);
		HANDLE handle = ::GetStdHandle(STD_OUTPUT_HANDLE);
		CONSOLE_SCREEN_BUFFER_INFO csbi;
		GetConsoleScreenBufferInfo(handle, &csbi);
		SetConsoleTextAttribute(handle, 0xF9);
		WORD colorOld = csbi.wAttributes;
		opt=getch();
		putch(opt);
		SetConsoleTextAttribute(handle, colorOld);
		print("",0xF8,0,7,0);
		if (opt == '1') {
			int energy=0;
			while (1) {
				int blood1 = rand () % 10 + 50000;
				int atk1 = rand () % 9 + 2000;
				int jiacheng = 0; 
				cout << "NPC血量=" << blood1 << ". 攻击力=" << atk1 << endl;
				cout << "第" << i << "回合" << endl;
				cout << "请问" << s << "要干什么?" << endl;
				fightmainban ();
				int k;
				cin >> k;
				if (k == 1) {
					int tmp = rand () % 10;
					if(jiacheng = 0){
						if (tmp < 4) {
							blood1 -= (atk * 2);
							cout << s << "使用附魔钻石剑砍击" << endl;
							cout << "NPC" << "还剩" << blood1 << "血" << endl;
							energy+=4;
						}
						else {
							blood1 -= atk;
							cout << s << "使用" << weapon[wep] << "砍击" << "NPC" << endl;
							cout << "NPC" << "还剩" << blood1 << "血" << endl;
							energy+=2;
						}
					}
					else{
						skillnum = 7;
						blood1 -= atk+100000;
						cout << s <&l
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GARSISGOD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值