C++小游戏

游戏内容

其实就是一个打怪小游戏


游戏代码

代码如下:

#include "heads.h"
#include "io.h"
typedef long long ll;
string weapon[5] = {"木剑" , "石剑" , "铁剑" , "钻石剑" , "下界合金剑"};
void fightmainban () {
	puts ("------------------------------");
	puts ("       请问你要干什么?       ");
	puts (" 1、攻击   2、回血   3、逃跑  ");
	puts ("------------------------------");
}
void mianban () {
	print("<TCF                                                           >",0xF8,0,0,0);
	print("<TCF  >                                                       <TCF  >",0xF8,0,1,0);
	print("<TCF  ><TF8                    请问你要干什么?                   ><TCF  >",0xF8,0,2,0);
	print("<TCF  ><TF81、打架 2、去商店 3、赚金币 4、打boss 5、指令 6、住旅馆><TCF  >",0xF8,0,3,0);
	print("<TCF  >                                                       <TCF  >",0xF8,0,4,0);
	print("<TCF  ><TF8                    选择:                             ><TCF  >",0xF8,0,4,0);
	print("<TCF  >                                                       <TCF  >",0xF8,0,5,0);
	print("<TCF                                                           >",0xF8,0,6,0);
	print("",0xF8,28,4,0);
}
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("ZCK\'s Game");
	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;
	print("<TFC----------小游戏  <TF5zck>出品---------->",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 == "zck" || s == "朱宸可") {
		atk = 99999999;
		blood = 99999999;
		equipment = 99999999;
		money = 999999999999;
	}
	else if (s == "xhc" || s == "谢昊宸") {
		atk = 1;
		blood = 2;
		equipment = 1;
		money = -100000000;
	}
	else {
		atk = rand () % 10 + 99902;
		blood = rand () % 9 + 2000;
		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);
	print(buff,0xF8,0,3,10);
	char opt;
	while (1) {
i:		Sleep(2000);
		system("cls");
		if (killed) blood = tmpblood;
		int i = 1;
		mianban ();
		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') {
			while (1) {
				int blood1 = rand () % 10 + 99900;
				int atk1 = rand () % 9 + 2000;
				cout << "NPC血量=" << blood1 << ". 攻击力=" << atk1 << endl;
				cout << "第" << i << "回合" << endl;
				cout << "请问" << s << "要干什么?" << endl;
				fightmainban ();
				int k;
				cin >> k;
				if (k == 1) {
					int tmp = rand () % 10;
					if (tmp < 4) {
						blood1 -= (atk * 2);
						cout << s << "使用附魔钻石剑攻击" << endl;
						cout << "NPC" << "还剩" << blood1 << "血" << endl;
					}
					else {
						blood1 -= atk;
						cout << s << "使用" << weapon[wep] << "攻击" << "NPC" << endl;
						cout << "NPC" << "还剩" << blood1 << "血" << endl;
					}
				}
				if (k == 2 && bl <= 0) puts ("泥煤吃的了......");
				if (k == 2 && bl > 0) {
					blood += 10;
					bl -- ;
					cout << s << "加10滴血" << endl;
				}
				if (k == 3) {
					int tmp = rand () % 10;
					if (tmp <= 4) {
						cout << s << "逃跑了" << endl;
			
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值