From 2fdb95299c1f06a940f6870f845d31eb294cb57e Mon Sep 17 00:00:00 2001
From: kongju <kongju@shaheway.com>
Date: Sun, 3 Dec 2023 20:26:27 +0800
Subject: [PATCH 1/6] cyq

---
 src/NetHack_3.7/src/decl.c | 58 ++++++++++++++++++++++----------------
 1 file changed, 34 insertions(+), 24 deletions(-)

diff --git a/src/NetHack_3.7/src/decl.c b/src/NetHack_3.7/src/decl.c
index bfccddc..9171fc6 100644
--- a/src/NetHack_3.7/src/decl.c
+++ b/src/NetHack_3.7/src/decl.c
@@ -17,7 +17,7 @@ NEARDATA const struct c_color_names c_color_names = {
     "black",  "amber", "golden", "light blue", "red",   "green",
     "silver", "blue",  "purple", "white",      "orange"
 };
-const char *c_obj_colors[] = {
+const char *c_obj_colors[] = {   //这里定义了一些物品的颜色
     "black",          /* CLR_BLACK */
     "red",            /* CLR_RED */
     "green",          /* CLR_GREEN */
@@ -36,8 +36,8 @@ const char *c_obj_colors[] = {
     "white",          /* CLR_WHITE */
 };
 
-const struct c_common_strings c_common_strings =
-    { "Nothing happens.",
+const struct c_common_strings c_common_strings =  //结构体变量中包含了一些常见的字符串,用于文本输出
+    { "Nothing happens.",      //在游戏中提供反馈、描述情况,进行交互
       "That's enough tries!",
       "That is a silly thing to %s.",
       "shudder for a moment.",
@@ -50,33 +50,34 @@ const struct c_common_strings c_common_strings =
       { "mon", "you" }
 };
 
-const struct savefile_info default_sfinfo = {
-#ifdef NHSTDC
+const struct savefile_info default_sfinfo = {  //定义了保存文件的默认信息
+#ifdef NHSTDC    //用于保存文件格式的标志位
     0x00000000UL
 #else
     0x00000000L
 #endif
-#if defined(COMPRESS) || defined(ZLIB_COMP)
+#if defined(COMPRESS) || defined(ZLIB_COMP)   //用于外部压缩标志位
         | SFI1_EXTERNALCOMP
 #endif
 #if defined(ZEROCOMP)
-        | SFI1_ZEROCOMP
+        | SFI1_ZEROCOMP   //零压缩标志位
 #endif
 #if defined(RLECOMP)
-        | SFI1_RLECOMP
+        | SFI1_RLECOMP    //RLE压缩标志
 #endif
     ,
 #ifdef NHSTDC
-    0x00000000UL, 0x00000000UL
+    0x00000000UL, 0x00000000UL   //保留字段
 #else
     0x00000000L, 0x00000000L
 #endif
 };
 
-const char disclosure_options[] = "iavgco";
-char emptystr[] = {0};       /* non-const */
+const char disclosure_options[] = "iavgco";  //是一个字符数组,包含了几个选项。这些选项用于控制信息的披露程度。
+char emptystr[] = {0};       /* non-const */  //是一个字符数组,用于表示空字符串。它是非常量数组,可以被修改。
 
 NEARDATA struct flag flags;  /* extern declaration is in flag.h, not decl.h */
+//是一个结构体变量,用于存储游戏中的标志位。该变量在flag.h中有外部声明。
 
 /* Global windowing data, defined here for multi-window-system support */
 #ifdef WIN32
@@ -84,25 +85,28 @@ boolean fqn_prefix_locked[PREFIX_COUNT] = { FALSE, FALSE, FALSE,
                                             FALSE, FALSE, FALSE,
                                             FALSE, FALSE, FALSE,
                                             FALSE };
+                                            //是一个布尔数组,用于表示文件名前缀是否被锁定。在这段代码中,它被初始化为全为FALSE。
 #endif
 #ifdef PREFIXES_IN_USE
 const char *fqn_prefix_names[PREFIX_COUNT] = {
     "hackdir",  "leveldir", "savedir",    "bonesdir",  "datadir",
     "scoredir", "lockdir",  "sysconfdir", "configdir", "troubledir"
-};
+};//是一个字符串指针数组,包含了一些文件名前缀的名称。这些名称用于指定不同类型文件的存储路径。
 #endif
 
 /* x/y/z deltas for the 10 movement directions (8 compass pts, 2 down/up) */
 const schar xdir[N_DIRS_Z] = { -1, -1,  0,  1,  1,  1,  0, -1, 0,  0 };
 const schar ydir[N_DIRS_Z] = {  0, -1, -1, -1,  0,  1,  1,  1, 0,  0 };
 const schar zdir[N_DIRS_Z] = {  0,  0,  0,  0,  0,  0,  0,  0, 1, -1 };
+//是三个有符号字符数组,分别表示十个移动方向(包括八个主要方向和上下方向)的x、y和z轴的增量。
 /* redordered directions, cardinals first */
 const schar dirs_ord[N_DIRS] =
     { DIR_W, DIR_N, DIR_E, DIR_S, DIR_NW, DIR_NE, DIR_SE, DIR_SW };
+//是一个有符号字符数组,表示经过重新排序的移动方向。首先是四个基本方向,然后是四个对角线方向。
 
-NEARDATA boolean has_strong_rngseed = FALSE;
+NEARDATA boolean has_strong_rngseed = FALSE;  //是一个布尔变量,用于表示是否具有强随机种子。
 struct engr *head_engr;
-NEARDATA struct instance_flags iflags;
+NEARDATA struct instance_flags iflags;  //是一个结构体变量,用于存储游戏实例的标志位。
 /* NOTE: the order of these words exactly corresponds to the
    order of oc_material values #define'd in objclass.h. */
 const char *materialnm[] = { "mysterious", "liquid",  "wax",        "organic",
@@ -111,29 +115,35 @@ const char *materialnm[] = { "mysterious", "liquid",  "wax",        "organic",
                              "metal",      "copper",  "silver",     "gold",
                              "platinum",   "mithril", "plastic",    "glass",
                              "gemstone",   "stone" };
-const char quitchars[] = " \r\n\033";
-NEARDATA struct savefile_info sfcap, sfrestinfo, sfsaveinfo;
-const int shield_static[SHIELD_COUNT] = {
+                             //是一个字符串指针数组,包含了一些物品材质的名称。这些名称与objclass.h中定义的oc_material值的顺序完全对应。
+
+const char quitchars[] = " \r\n\033";//是一个包含一些表示退出字符的字符串,包括空格、回车、换行和转义字符。
+
+NEARDATA struct savefile_info sfcap, sfrestinfo, sfsaveinfo;  //结构体变量,用于保存文件的信息。
+
+const int shield_static[SHIELD_COUNT] = {//是一个整型数组,包含了一些盾牌的静态符号。
     S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4, /* 7 per row */
     S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4,
     S_ss1, S_ss2, S_ss3, S_ss2, S_ss1, S_ss2, S_ss4,
 };
-NEARDATA struct you u;
-NEARDATA time_t ubirthday;
-NEARDATA struct u_realtime urealtime;
-NEARDATA struct obj *uwep, *uarm, *uswapwep,
+NEARDATA struct you u;//结构体变量,用于表示玩家角色的状态和属性。
+NEARDATA time_t ubirthday;  //是一个time_t类型的变量,表示玩家角色的出生时间。
+NEARDATA struct u_realtime urealtime;  //用于表示游戏时间的实时信息。
+NEARDATA struct obj *uwep, *uarm, *uswapwep,  //结构体的指针变量,用于表示玩家角色的装备和物品。
     *uquiver, /* quiver */
     *uarmu, /* under-wear, so to speak */
     *uskin, /* dragon armor, if a dragon */
     *uarmc, *uarmh, *uarms, *uarmg,*uarmf, *uamul,
     *uright, *uleft, *ublindf, *uchain, *uball;
-const char vowels[] = "aeiouAEIOU";
-NEARDATA winid WIN_MESSAGE, WIN_STATUS, WIN_MAP, WIN_INVEN;
-const char ynchars[] = "yn";
+const char vowels[] = "aeiouAEIOU"; //是一个包含元音字母的字符串,包括小写和大写的元音字母。
+NEARDATA winid WIN_MESSAGE, WIN_STATUS, WIN_MAP, WIN_INVEN;//是窗口标识符(winid类型)变量,用于表示游戏中的不同窗口。
+const char ynchars[] = "yn"; //是包含一些表示"yes"和"no"的字符的字符串。
 const char ynqchars[] = "ynq";
 const char ynaqchars[] = "ynaq";
 const char ynNaqchars[] = "yn#aq";
 NEARDATA long yn_number = 0L;
+//这些变量的定义用于实现游戏的逻辑和界面显示等功能。
+//其中包括随机数种子、文本输出、文件操作、游戏状态、时间管理、玩家角色属性、装备和物品等。
 
 #ifdef PANICTRACE
 const char *ARGV0;
-- 
2.34.1


From add6f3fa96e7867d446944e0f12250c9ef4de81a Mon Sep 17 00:00:00 2001
From: kongju <kongju@shaheway.com>
Date: Sun, 3 Dec 2023 20:29:59 +0800
Subject: [PATCH 2/6] cyq

---
 src/NetHack_3.7/src/decl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/NetHack_3.7/src/decl.c b/src/NetHack_3.7/src/decl.c
index 9171fc6..f01cab9 100644
--- a/src/NetHack_3.7/src/decl.c
+++ b/src/NetHack_3.7/src/decl.c
@@ -17,7 +17,7 @@ NEARDATA const struct c_color_names c_color_names = {
     "black",  "amber", "golden", "light blue", "red",   "green",
     "silver", "blue",  "purple", "white",      "orange"
 };
-const char *c_obj_colors[] = {   //这里定义了一些物品的颜色
+const char *c_obj_colors[] = {   //这里定义了一些物品的颜色 
     "black",          /* CLR_BLACK */
     "red",            /* CLR_RED */
     "green",          /* CLR_GREEN */
-- 
2.34.1


From 789bc7e4746913ce62ec937ea426331a555be384 Mon Sep 17 00:00:00 2001
From: kongju <kongju@shaheway.com>
Date: Mon, 4 Dec 2023 20:35:48 +0800
Subject: [PATCH 3/6] decl.c's modify

---
 src/NetHack_3.7/src/decl.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/NetHack_3.7/src/decl.c b/src/NetHack_3.7/src/decl.c
index f01cab9..9c32394 100644
--- a/src/NetHack_3.7/src/decl.c
+++ b/src/NetHack_3.7/src/decl.c
@@ -146,12 +146,12 @@ NEARDATA long yn_number = 0L;
 //其中包括随机数种子、文本输出、文件操作、游戏状态、时间管理、玩家角色属性、装备和物品等。
 
 #ifdef PANICTRACE
-const char *ARGV0;
+const char *ARGV0;  //是一个指向const char类型的指针变量,在宏定义PANICTRACE被定义时生效。
 #endif
 
-#define IVMAGIC 0xdeadbeef
+#define IVMAGIC 0xdeadbeef //是一个整型常量,表示一个特定的魔数。
 
-const struct Role urole_init_data = {
+const struct Role urole_init_data = { //是一个struct Role结构体变量,用于初始化玩家角色的初始数据。其中包括角色名称、属性、初始位置等信息。
     { "Undefined", 0 },
     { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
       { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } },
@@ -177,7 +177,7 @@ const struct Role urole_init_data = {
 };
 
 const struct Race urace_init_data = {
-    "something",
+    "something", //是一个struct Race结构体变量,用于初始化玩家种族的初始数据。其中包括种族名称、属性、初始位置等信息。
     "undefined",
     "something",
     "Xxx",
@@ -198,7 +198,8 @@ const struct Race urace_init_data = {
 };
 
 
-const struct instance_globals_a g_init_a = {
+const struct instance_globals_a g_init_a = { //是一个struct instance_globals_a结构体变量,用于初始化一些全局变量。
+//每个注释后面的注释表示该变量在代码中的使用位置。
     /* artifact.c */
     /* decl.c */
     UNDEFINED_PTR,  /* afternmv */
@@ -226,7 +227,8 @@ const struct instance_globals_a g_init_a = {
     IVMAGIC  /* a_magic to validate that structure layout has been preserved */
 };
 
-const struct instance_globals_b g_init_b = {
+const struct instance_globals_b g_init_b = {//是一个struct instance_globals_b结构体变量,用于初始化另一些全局变量。
+//每个注释后面的注释表示该变量在代码中的使用位置。
     /* botl.c */
     { { { NULL, NULL, 0L, FALSE, FALSE, 0, 0U, { 0 }, { 0 }, NULL, 0, 0, 0
 #ifdef STATUS_HILITES
-- 
2.34.1


From 138c8d016925201137cb7d345dd793fe85f8bf04 Mon Sep 17 00:00:00 2001
From: kongju <kongju@shaheway.com>
Date: Mon, 4 Dec 2023 21:15:54 +0800
Subject: [PATCH 4/6] decl.c's modify

---
 src/NetHack_3.7/src/decl.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/src/NetHack_3.7/src/decl.c b/src/NetHack_3.7/src/decl.c
index 9c32394..5aeeecd 100644
--- a/src/NetHack_3.7/src/decl.c
+++ b/src/NetHack_3.7/src/decl.c
@@ -498,26 +498,26 @@ const struct instance_globals_l g_init_l = {
     0U, /* last_hider */
     /* nhlan.c */
 #ifdef MAX_LAN_USERNAME
-    UNDEFINED_VALUES, /* lusername */
-    MAX_LAN_USERNAME, /* lusername_size */
+    UNDEFINED_VALUES, /* lusername */ //是一个全局变量,用于存储本地区域网络的用户名。如果定义了MAX_LAN_USERNAME宏,则将其初始化为UNDEFINED_VALUES,否则将其初始化为未定义的值。注释后面的注释表示该变量在代码中的使用位置。
+    MAX_LAN_USERNAME, /* lusername_size */ //是一个全局变量,用于存储本地区域网络用户名的大小。
 #endif /* MAX_LAN_USERNAME */
     /* nhlua.c */
-    UNDEFINED_VALUE, /* luacore */
-    DUMMY, /* lua_warnbuf[] */
+    UNDEFINED_VALUE, /* luacore */ //是一个全局变量,用于存储Lua脚本的核心。将其初始化为未定义的值。
+    DUMMY, /* lua_warnbuf[] */ //是一个数组,用于存储Lua警告信息的缓冲区。
     /* options.c */
-    FALSE, /* loot_reset_justpicked */
+    FALSE, /* loot_reset_justpicked */ //是一个全局变量,用于表示是否刚刚拾取了战利品并需要重置。将其初始化为FALSE。
     /* save.c */
-    (struct obj *) 0, /* looseball */
+    (struct obj *) 0, /* looseball */ //是全局变量,用于表示游戏中的松散物品
     (struct obj *) 0, /* loosechain */
     /* sp_lev.c */
-    NULL, /* lev_message */
-    UNDEFINED_PTR, /* lregions */
+    NULL, /* lev_message */ //是一个全局变量,用于存储地图生成时的消息。
+    UNDEFINED_PTR, /* lregions */ //一个全局变量,用于存储地图生成时的区域信息
     /* trap.c */
-    { UNDEFINED_PTR, 0, 0 }, /* launchplace */
+    { UNDEFINED_PTR, 0, 0 }, /* launchplace */ //是一个结构体变量,用于表示陷阱的发射位置。
     /* windows.c */
-    UNDEFINED_PTR, /* last_winchoice */
+    UNDEFINED_PTR, /* last_winchoice */ //是一个全局变量,用于存储上次选择的窗口选项。
     /* new */
-    DUMMY,   /* lua_ver[LUA_VER_BUFSIZ] */
+    DUMMY,   /* lua_ver[LUA_VER_BUFSIZ] */ //是一个字符数组,用于存储Lua版本信息。
     DUMMY,   /* lua_copyright[LUA_COPYRIGHT_BUFSIZ] */
     TRUE, /* havestate*/
     IVMAGIC  /* l_magic to validate that structure layout has been preserved */
@@ -960,8 +960,11 @@ const struct const_globals cg = {
 };
 
 #define ZERO(x) memset(&x, 0, sizeof(x))
+//是一个宏定义,用于将变量x的内存空间清零。使用memset函数将x的内存空间的值设置为0,大小为sizeof(x)。
 
 #define MAGICCHECK(xx) \
+//是一个宏定义,用于检查结构体变量xx的魔术值和状态。
+//如果xx的magic字段不等于IVMAGIC(预定义的魔术值),则输出错误信息并退出程序。如果xx的havestate字段不等于TRUE,则输出错误信息并退出程序。
     do {                                                                   \
         if ((xx).magic != IVMAGIC) {                                       \
             raw_printf(                                                    \
-- 
2.34.1


From 79b2af32217db9b74518f0b1a3d8a9ce42ce316d Mon Sep 17 00:00:00 2001
From: kongju <kongju@shaheway.com>
Date: Mon, 4 Dec 2023 21:15:54 +0800
Subject: [PATCH 5/6] modify

---
 src/NetHack_3.7/src/allmain.c |  2 +-
 src/NetHack_3.7/src/decl.c    | 25 ++++++++++++++-----------
 src/NetHack_3.7/src/detect.c  |  2 +-
 src/NetHack_3.7/src/dig.c     |  2 +-
 src/NetHack_3.7/src/display.c |  2 +-
 src/NetHack_3.7/src/dlb.c     |  2 +-
 src/NetHack_3.7/src/do.c      |  2 +-
 src/NetHack_3.7/src/do_name.c |  2 +-
 src/NetHack_3.7/src/do_wear.c |  2 +-
 src/NetHack_3.7/src/dog.c     |  2 +-
 src/NetHack_3.7/src/dogmove.c |  2 +-
 src/NetHack_3.7/src/dokick.c  |  2 +-
 src/NetHack_3.7/src/dothrow.c |  2 +-
 13 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/src/NetHack_3.7/src/allmain.c b/src/NetHack_3.7/src/allmain.c
index d9c8c74..75d88f5 100644
--- a/src/NetHack_3.7/src/allmain.c
+++ b/src/NetHack_3.7/src/allmain.c
@@ -12,7 +12,7 @@
 #include <signal.h>
 #endif
 
-static void moveloop_preamble(boolean);
+static void moveloop_preamble(boolean); 
 static void u_calc_moveamt(int);
 static void maybe_do_tutorial(void);
 #ifdef POSITIONBAR
diff --git a/src/NetHack_3.7/src/decl.c b/src/NetHack_3.7/src/decl.c
index 9c32394..5aeeecd 100644
--- a/src/NetHack_3.7/src/decl.c
+++ b/src/NetHack_3.7/src/decl.c
@@ -498,26 +498,26 @@ const struct instance_globals_l g_init_l = {
     0U, /* last_hider */
     /* nhlan.c */
 #ifdef MAX_LAN_USERNAME
-    UNDEFINED_VALUES, /* lusername */
-    MAX_LAN_USERNAME, /* lusername_size */
+    UNDEFINED_VALUES, /* lusername */ //是一个全局变量,用于存储本地区域网络的用户名。如果定义了MAX_LAN_USERNAME宏,则将其初始化为UNDEFINED_VALUES,否则将其初始化为未定义的值。注释后面的注释表示该变量在代码中的使用位置。
+    MAX_LAN_USERNAME, /* lusername_size */ //是一个全局变量,用于存储本地区域网络用户名的大小。
 #endif /* MAX_LAN_USERNAME */
     /* nhlua.c */
-    UNDEFINED_VALUE, /* luacore */
-    DUMMY, /* lua_warnbuf[] */
+    UNDEFINED_VALUE, /* luacore */ //是一个全局变量,用于存储Lua脚本的核心。将其初始化为未定义的值。
+    DUMMY, /* lua_warnbuf[] */ //是一个数组,用于存储Lua警告信息的缓冲区。
     /* options.c */
-    FALSE, /* loot_reset_justpicked */
+    FALSE, /* loot_reset_justpicked */ //是一个全局变量,用于表示是否刚刚拾取了战利品并需要重置。将其初始化为FALSE。
     /* save.c */
-    (struct obj *) 0, /* looseball */
+    (struct obj *) 0, /* looseball */ //是全局变量,用于表示游戏中的松散物品
     (struct obj *) 0, /* loosechain */
     /* sp_lev.c */
-    NULL, /* lev_message */
-    UNDEFINED_PTR, /* lregions */
+    NULL, /* lev_message */ //是一个全局变量,用于存储地图生成时的消息。
+    UNDEFINED_PTR, /* lregions */ //一个全局变量,用于存储地图生成时的区域信息
     /* trap.c */
-    { UNDEFINED_PTR, 0, 0 }, /* launchplace */
+    { UNDEFINED_PTR, 0, 0 }, /* launchplace */ //是一个结构体变量,用于表示陷阱的发射位置。
     /* windows.c */
-    UNDEFINED_PTR, /* last_winchoice */
+    UNDEFINED_PTR, /* last_winchoice */ //是一个全局变量,用于存储上次选择的窗口选项。
     /* new */
-    DUMMY,   /* lua_ver[LUA_VER_BUFSIZ] */
+    DUMMY,   /* lua_ver[LUA_VER_BUFSIZ] */ //是一个字符数组,用于存储Lua版本信息。
     DUMMY,   /* lua_copyright[LUA_COPYRIGHT_BUFSIZ] */
     TRUE, /* havestate*/
     IVMAGIC  /* l_magic to validate that structure layout has been preserved */
@@ -960,8 +960,11 @@ const struct const_globals cg = {
 };
 
 #define ZERO(x) memset(&x, 0, sizeof(x))
+//是一个宏定义,用于将变量x的内存空间清零。使用memset函数将x的内存空间的值设置为0,大小为sizeof(x)。
 
 #define MAGICCHECK(xx) \
+//是一个宏定义,用于检查结构体变量xx的魔术值和状态。
+//如果xx的magic字段不等于IVMAGIC(预定义的魔术值),则输出错误信息并退出程序。如果xx的havestate字段不等于TRUE,则输出错误信息并退出程序。
     do {                                                                   \
         if ((xx).magic != IVMAGIC) {                                       \
             raw_printf(                                                    \
diff --git a/src/NetHack_3.7/src/detect.c b/src/NetHack_3.7/src/detect.c
index 00960fb..2754e00 100644
--- a/src/NetHack_3.7/src/detect.c
+++ b/src/NetHack_3.7/src/detect.c
@@ -11,7 +11,7 @@
 #include "hack.h"
 #include "artifact.h"
 
-static boolean unconstrain_map(void);
+static boolean unconstrain_map(void); 
 static void reconstrain_map(void);
 static void map_redisplay(void);
 static void browse_map(unsigned, const char *);
diff --git a/src/NetHack_3.7/src/dig.c b/src/NetHack_3.7/src/dig.c
index 04c1419..5e3d81a 100644
--- a/src/NetHack_3.7/src/dig.c
+++ b/src/NetHack_3.7/src/dig.c
@@ -17,7 +17,7 @@ static boolean furniture_handled(coordxy, coordxy, boolean);
 
 /* Indices returned by dig_typ() */
 enum dig_types {
-    DIGTYP_UNDIGGABLE = 0,
+    DIGTYP_UNDIGGABLE = 0, 
     DIGTYP_ROCK,
     DIGTYP_STATUE,
     DIGTYP_BOULDER,
diff --git a/src/NetHack_3.7/src/display.c b/src/NetHack_3.7/src/display.c
index 079c287..0211e14 100644
--- a/src/NetHack_3.7/src/display.c
+++ b/src/NetHack_3.7/src/display.c
@@ -19,7 +19,7 @@
  * interface.
  *
  * The display system deals with an abstraction called a glyph.  Anything
- * that could possibly be displayed has a unique glyph identifier.
+ * that could possibly be displayed has a unique glyph identifier. 
  *
  * What is seen on the screen is a combination of what the hero remembers
  * and what the hero currently sees.  Objects and dungeon features (walls
diff --git a/src/NetHack_3.7/src/dlb.c b/src/NetHack_3.7/src/dlb.c
index c6788d9..3e1ea9e 100644
--- a/src/NetHack_3.7/src/dlb.c
+++ b/src/NetHack_3.7/src/dlb.c
@@ -26,7 +26,7 @@ typedef struct dlb_procs {
     int (*dlb_fread_proc)(char *, int, int, DLB_P);
     int (*dlb_fseek_proc)(DLB_P, long, int);
     char *(*dlb_fgets_proc)(char *, int, DLB_P);
-    int (*dlb_fgetc_proc)(DLB_P);
+    int (*dlb_fgetc_proc)(DLB_P); 
     long (*dlb_ftell_proc)(DLB_P);
 } dlb_procs_t;
 
diff --git a/src/NetHack_3.7/src/do.c b/src/NetHack_3.7/src/do.c
index 75f6bee..e50d8a7 100644
--- a/src/NetHack_3.7/src/do.c
+++ b/src/NetHack_3.7/src/do.c
@@ -26,7 +26,7 @@ static void temperature_change_msg(schar);
 
 /* the #drop command: drop one inventory item */
 int
-dodrop(void)
+dodrop(void) 
 {
     int result;
 
diff --git a/src/NetHack_3.7/src/do_name.c b/src/NetHack_3.7/src/do_name.c
index 5d074ed..3e94a14 100644
--- a/src/NetHack_3.7/src/do_name.c
+++ b/src/NetHack_3.7/src/do_name.c
@@ -28,7 +28,7 @@ static void do_oname(struct obj *);
 static char *docall_xname(struct obj *);
 static void namefloorobj(void);
 
-extern const char what_is_an_unknown_object[]; /* from pager.c */
+extern const char what_is_an_unknown_object[]; /* from pager.c */ 
 
 #define NUMMBUF 5
 
diff --git a/src/NetHack_3.7/src/do_wear.c b/src/NetHack_3.7/src/do_wear.c
index 360db95..6593ebf 100644
--- a/src/NetHack_3.7/src/do_wear.c
+++ b/src/NetHack_3.7/src/do_wear.c
@@ -32,7 +32,7 @@ static int Shirt_on(void);
 static void dragon_armor_handling(struct obj *, boolean, boolean);
 static void Amulet_on(void);
 static void learnring(struct obj *, boolean);
-static void adjust_attrib(struct obj *, int, int);
+static void adjust_attrib(struct obj *, int, int); 
 static void Ring_off_or_gone(struct obj *, boolean);
 static int select_off(struct obj *);
 static struct obj *do_takeoff(void);
diff --git a/src/NetHack_3.7/src/dog.c b/src/NetHack_3.7/src/dog.c
index 934d88a..5a8480d 100644
--- a/src/NetHack_3.7/src/dog.c
+++ b/src/NetHack_3.7/src/dog.c
@@ -34,7 +34,7 @@ free_edog(struct monst *mtmp)
 {
     if (mtmp->mextra && EDOG(mtmp)) {
         free((genericptr_t) EDOG(mtmp));
-        EDOG(mtmp) = (struct edog *) 0;
+        EDOG(mtmp) = (struct edog *) 0; 
     }
     mtmp->mtame = 0;
 }
diff --git a/src/NetHack_3.7/src/dogmove.c b/src/NetHack_3.7/src/dogmove.c
index 5beaea7..710c4f0 100644
--- a/src/NetHack_3.7/src/dogmove.c
+++ b/src/NetHack_3.7/src/dogmove.c
@@ -33,7 +33,7 @@ droppables(struct monst *mon)
      * be considered a duplicate and get treated as a normal candidate
      * for dropping.
      *
-     * This could be 'auto', but then 'gcc -O2' warns that this function
+     * This could be 'auto', but then 'gcc -O2' warns that this function 
      * might return the address of a local variable.  It's mistaken,
      * &dummy is never returned.  'static' is simplest way to shut it up.
      */
diff --git a/src/NetHack_3.7/src/dokick.c b/src/NetHack_3.7/src/dokick.c
index 8fc6585..e9b9d79 100644
--- a/src/NetHack_3.7/src/dokick.c
+++ b/src/NetHack_3.7/src/dokick.c
@@ -31,7 +31,7 @@ static const char kick_passes_thru[] = "kick passes harmlessly through";
 static void
 kickdmg(struct monst *mon, boolean clumsy)
 {
-    int mdx, mdy;
+    int mdx, mdy; 
     int dmg = (ACURRSTR + ACURR(A_DEX) + ACURR(A_CON)) / 15;
     int specialdmg, kick_skill = P_NONE;
     boolean trapkilled = FALSE;
diff --git a/src/NetHack_3.7/src/dothrow.c b/src/NetHack_3.7/src/dothrow.c
index cea2f77..dec8fba 100644
--- a/src/NetHack_3.7/src/dothrow.c
+++ b/src/NetHack_3.7/src/dothrow.c
@@ -30,7 +30,7 @@ static boolean mhurtle_step(genericptr_t, coordxy, coordxy);
       && ((o)->otyp == AKLYS                                            \
           || ((o)->oartifact == ART_MJOLLNIR && Role_if(PM_VALKYRIE)))) \
      || (o)->otyp == BOOMERANG)
-
+ 
 /* gt.thrownobj (decl.c) tracks an object until it lands */
 
 int
-- 
2.34.1


From da2c1ec4ae5a56fdf8c95e7f96b2297301e1a214 Mon Sep 17 00:00:00 2001
From: p9yu5zbfh <3113993691@qq.com>
Date: Mon, 22 Jan 2024 19:17:13 +0800
Subject: [PATCH 6/6] =?UTF-8?q?Add=20=E7=8E=8B=E6=B5=A9=20=E7=94=A8?=
 =?UTF-8?q?=E4=BE=8B=E6=8F=8F=E8=BF=B0=E5=8F=8A=E7=94=A8=E4=BE=8B=E4=BA=A4?=
 =?UTF-8?q?=E4=BA=92=E7=AD=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 doc/王浩 用例描述及用例交互等 | 79 +++++++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 doc/王浩 用例描述及用例交互等

diff --git a/doc/王浩 用例描述及用例交互等 b/doc/王浩 用例描述及用例交互等
new file mode 100644
index 0000000..3edafb1
--- /dev/null
+++ b/doc/王浩 用例描述及用例交互等	
@@ -0,0 +1,79 @@
+用例名:道具使用
+执行者:玩家
+目标:将玩家装备的道具效果提交到属性面板上
+前置条件:
+	玩家拥有至少一件道具
+	玩家处于可以与道具交互的状态(例如,非战斗状态)
+后置条件:
+	道具使用后,其效果将被应用
+	玩家的状态可能因道具效果而改变
+主要场景:
+  玩家选择一个道具。
+  玩家点击或选择“使用”选项。
+  游戏判断玩家是否满足使用该道具的条件(例如,是否在战斗中,道具是否为可消耗等)。
+  如果满足条件,游戏将执行道具效果,并在界面上显示相关信息。
+  如果道具具有持续效果,游戏将在一段时间内保持这些效果。
+  如果道具为一次性消耗品,使用后将消失。
+  玩家可以查看道具使用后的效果和状态变化。
+交互动作:
+	(1)玩家遇到特殊情况后下达命令cmd.c并apply.c执行来选择使用道具。
+	(2)装备道具后根据更新后属性面板看能否解决当前问题。
+	(3)如果能解决则根据宝物使用更新内存分配alloc.c并记录时间date.c参数;如果不能解决,则继续试用其他宝物。
+
+用例交互图 
+|                                             玩家                                           
+|   +---------------+        +--------------+        +-------------+        +-----------+        +-----------+    
+| | 选择道具  |---------->| 判断条件  |---------->| 显示效果 |---------->| 更新状态  |---------->| 更新UI   |---------->| 反馈   | 
+|   +---------------+        +--------------+        +-------------+        +-----------+        +-----------+     
+|   |                                         游戏系统                                     
+|   +---------------+        +--------------+        +-------------+        +-----------+        +-----------+     
+|| 触发条件    |---------->| 验证玩家  |---------->| 获取道具信息|---------->| 执行效果|---------->| 更新UI |---------->| 返回结果 | 
+|   +---------------+        +--------------+        +-------------+        +-----------+        +-----------+       
+函数的自然语言描述
+alloc.c
+描述:处理游戏中的内存分配。
+用例:当游戏需要创建新对象或数据结构时,会使用此模块中的函数来分配所需的内存。
+apply.c
+描述:处理各种应用的逻辑。
+用例:当玩家对其他对象(例如对一个门应用钥匙)或自己应用药物时,相关的逻辑会被处理。
+artifact.c
+描述:处理神器(Artifact)相关的逻辑。
+用例:玩家可能会找到神器,并尝试使用它们或与之互动。此模块处理这些交互的逻辑。
+attrib.c
+描述:处理属性相关的逻辑。
+用例:玩家或敌人可能有各种属性,如攻击力、防御力、速度等。此模块处理这些属性的逻辑。
+ball.c
+描述:处理魔法球(Ball)相关的逻辑。
+用例:魔法球是游戏中的一个对象,玩家可以捡起并使用它。此模块处理与魔法球相关的所有逻辑。
+bones.c
+描述:处理骨头(Bones)相关的逻辑。
+用例:骨头是游戏中一种特殊的对象,当玩家死亡后可能会留下。此模块处理与骨头相关的所有逻辑。
+botl.c
+描述:处理宝物(Treasure)相关的逻辑。
+用例:玩家在游戏中可能会找到各种宝物,如金币、宝石等。此模块处理与这些宝物相关的所有逻辑。
+cmd.c
+描述:处理命令相关的逻辑。
+用例:玩家在游戏中会发出各种命令,如移动、攻击、使用物品等。此模块处理这些命令的逻辑。
+date.c
+描述:处理日期和时间相关的逻辑。
+用例:游戏世界有一个时间流逝的机制,此模块处理与时间流逝、日期等相关的逻辑。
+dbridge.c
+描述:处理桥(Bridge)相关的逻辑。
+用例:桥是游戏中一种特殊的对象或地形,玩家可能需要跨过或与之互动。此模块处理与桥相关的所有逻辑。
+
+各个函数的分类属性以及相关的简单逻辑关系如下:
+玩家-》通过命令cmd.c再由apply.c来执行    
+
+系统运行-》
+内存分配alloc.c
+时间date.c
+
+显示面板-》
+属性面板attrib.c
+
+	道具-》
+(桥dbridge.c
+宝物botl.c
+骨头bones.c
+魔法球ball.c
+神器artifact.c)
\ No newline at end of file
-- 
2.34.1