Project1

标题: 做了个小游戏 [打印本页]

作者: phunmung5173    时间: 2019-2-27 00:36
标题: 做了个小游戏
本帖最后由 phunmung5173 于 2019-2-28 07:14 编辑

C语言初学者 学以致用 硬是用C直接写了个动作游戏
不懂该发哪里只好发水区

完成度大概有一半吧?主要是增加敌人种类和有待调整的平衡度问题

游戏是英文的 不过只有那几个单词~ 欢迎体验然后给意见 链接 https://bit.ly/2tDEV3G



方向键移动 Z键攻击 X键防御

然后是想问问看这里的大佬们
把这个发给身边的朋友打开的时候偶尔会弹出以下错误




解决方法是安装官方运行库


我姑且把上面两个文档都放进游戏文件夹里了 但是我总不能逐个告诉玩家去安装这个吧?

想说有什么解决方法... 我对这块没什么概念

作者: 塞路休斯    时间: 2019-2-27 05:24
本帖最后由 塞路休斯 于 2019-2-27 05:26 编辑

简单的解决办法,把运行库的名字改成“如果打不开先安装这个”,打到同一个压缩包里面。
复杂的解决办法,先判断系统是否含有运行库,如果没有弹个窗口告知,并帮用户用默认浏览器打开运行库下载页面。如果检测运行库存在,则继续调用你的游戏程序。

很久不用windows了,以下代码网上找来,我也没法帮你测试,但目测问题不大,稍作修改即可。

[pre lang="c++" line="1" file="1"]#include "stdafx.h"
#include <string>
#include <Windows.h>
using std::string;

LPCTSTR reg[18] = { _T("{A49F249F-0C91-497F-86DF-B2585E8E76B7}"),//Microsoft Visual C++ 2005 Redistributable X86
_T("{7299052B-02A4-4627-81F2-1818DA5D550D}"),//Microsoft Visual C++ 2005 SP1 Redistributable X86
_T("{837b34e3-7c30-493c-8f6a-2b0f04e2912c}"),//Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update X86
_T("{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}"),//Microsoft Visual C++ 2005 Redistributable X64
_T("{071C9B48-7C32-4621-A0AC-3F809523288F}"),//Microsoft Visual C++ 2005 SP1 Redistributable X64
_T("{6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}"),//Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update X64
_T("{03ED71EA-F531-4927-AABD-1C31BCE8E187}"),//Microsoft Visual C++ 2005 Redistributable IA64
_T("{0F8FB34E-675E-42ED-850B-29D98C2ECE08}"),//Microsoft Visual C++ 2005 SP1 Redistributable IA64
_T("{85025851-A784-46D8-950D-05CB3CA43A13}"),//Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update IA64
_T("{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}"),//Microsoft Visual C++ 2008 Redistributable X86
_T("{9A25302D-30C0-39D9-BD6F-21E6EC160475}"),//Microsoft Visual C++ 2008 SP1 Redistributable X86
_T("{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}"),//Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update X86
_T("{350AA351-21FA-3270-8B7A-835434E766AD}"),//Microsoft Visual C++ 2008 Redistributable X64
_T("{8220EEFE-38CD-377E-8595-13398D740ACE}"),//Microsoft Visual C++ 2008 SP1 Redistributable X64
_T("{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}"),//Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update X64
_T("{2B547B43-DB50-3139-9EBE-37D419E0F5FA}"),//Microsoft Visual C++ 2008 Redistributable IA64
_T("{5827ECE1-AEB0-328E-B813-6FC68622C1F9}"),//Microsoft Visual C++ 2008 SP1 Redistributable IA64
_T("{977AD349-C2A8-39DD-9273-285C08987C7B}"),//Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update IA64
};

/*
功能:检测lpszSubKey是否存在
*/
bool detectVCppRedistributable(LPCTSTR lpszSubKey){
    //printf("%ls\n", lpszSubKey);
    HKEY hKey;
    int ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_READ, &hKey);
    RegCloseKey(hKey);
    return (ret == 0) ? true : false;
}

int _tmain(int argc, _TCHAR* argv[]){
    //拼接key并调用函数detectVCppRedistributable检测注册表
    for (int i = 0; i < 18; ++i){
        wchar_t key[100] = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\");
        wcscat_s(key, 100, reg);
        if (detectVCppRedistributable(key)){
            printf("yes\n");
            break;
        }
    }

    return 0;
}[/pre]
作者: phunmung5173    时间: 2019-2-27 07:51
塞路休斯 发表于 2019-2-27 05:24
简单的解决办法,把运行库的名字改成“如果打不开先安装这个”,打到同一个压缩包里面。
复杂的解决办法, ...

呜哇 谢谢你 晚上试试看

第一个方法已经用了 不过觉得这样不好
而且大部分玩家看到这个错误都不知所云
作者: 谢拉卡姗娜    时间: 2019-2-27 08:52
光是Stamina我就不认识,还有蓝底黑字好难看清
作者: fux2    时间: 2019-2-27 10:05
初学做成这样相当厉害了,毕竟做游戏和做程序不是一码事
作者: phunmung5173    时间: 2019-2-28 05:15
谢拉卡姗娜 发表于 2019-2-27 08:52
光是Stamina我就不认识,还有蓝底黑字好难看清




改了浅一点的  另外Stamina是体力
作者: phunmung5173    时间: 2019-2-28 05:19
fux2 发表于 2019-2-27 10:05
初学做成这样相当厉害了,毕竟做游戏和做程序不是一码事

谢谢!

做游戏和做程序不是一码事怎么说
作者: myownroc    时间: 2019-2-28 12:29
可以看一下c/c++的网络通信,然后一个二人对战游戏就出来了→_→
作者: v2sam    时间: 2019-2-28 14:47
C很好很强大,适合从底层开始开发属于自己的架构,对于LZ这种刻苦耐劳的品质表示敬佩。
作者: 梦·林夕    时间: 2019-2-28 15:33
好。。好厉害
感觉我们学c就是为了学c++(?)
作者: myownroc    时间: 2019-2-28 19:55
还有就是visual studio可以开启静态编译,这样就可以移除对vc运行库的依赖了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1