这是一个很经典的游戏系列,在我本科的时候,常常和同学一起游戏,通宵达旦,比拼谁能早日统一全中国。游戏里可以自建武将,但是挑来跳去,很难挑到一个武力高强,又不是白痴的人物。于是乎,偶就偷偷摸摸翻了几本c语言的教程,写了一段小程序,用来修改自建武将的资料。现在看来,那个时候面向过程的编程方法着实可爱 : ) 源代码如下:
#include
"
stdio.h
"
struct
genenral
{
long
position
;
int
wuli
;
int
zhili
;
int
dengchang
;
int
tili
;
int
jili
;
int
nannv
;
}
genrl
[
50
]
;
save
(
FILE
*
fp
,
int
i
)
{
fseek
(
fp
, -
1
L
,
1
)
;
printf
(
"
%-6d
"
,
i
)
;
genrl
[
i
]
.
position
=
ftell
(
fp
)
;
genrl
[
i
]
.
wuli
=
fgetc
(
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
printf
(
"
%-6d
"
,
genrl
[
i
]
.
wuli
)
;
genrl
[
i
]
.
zhili
=
fgetc
(
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
printf
(
"
%-6d
"
,
genrl
[
i
]
.
zhili
)
;
genrl
[
i
]
.
dengchang
=
fgetc
(
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
genrl
[
i
]
.
tili
=
fgetc
(
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
printf
(
"
%-6d
"
,
genrl
[
i
]
.
tili
)
;
genrl
[
i
]
.
jili
=
fgetc
(
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
printf
(
"
%-6d
"
,
genrl
[
i
]
.
jili
)
;
genrl
[
i
]
.
nannv
=
fgetc
(
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
printf
(
"
%-6d
\
n
"
,
genrl
[
i
]
.
nannv
)
;
}
writeback
(
FILE
*
fp
,
int
i
)
{
fseek
(
fp
,
genrl
[
i
]
.
position
,
0
)
;
fputc
(
genrl
[
i
]
.
wuli
,
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
fputc
(
genrl
[
i
]
.
zhili
,
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
fputc
(
genrl
[
i
]
.
dengchang
,
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
fputc
(
genrl
[
i
]
.
tili
,
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
fputc
(
genrl
[
i
]
.
jili
,
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
fputc
(
genrl
[
i
]
.
nannv
,
fp
)
;
fseek
(
fp
,
1
L
,
1
)
;
}
main
()
{
int
i
,
t
;
FILE
*
fp
;
if
((
fp
=
fopen
(
"
NewGen~1.sav
"
,
"
rb+
"
))
==
NULL
)
{
printf
(
"
no saved file!
\
n
"
)
;
printf
(
"
该程序在Win98下测试通过,请将其拷贝到Sango3存档目录下使用
\
n
"
)
;
printf
(
"
制作:http://isdox.com
\
n
"
)
;
getch
()
;
}
else
{
printf
(
"
制作:http://isdox.com
\
n
"
)
;
printf
(
"
下面是自建武将内容:
\
n
"
)
;
for
(
;;
)
{
printf
(
"
序号 武力 智力 体力 技力 男女
\
n
"
)
;
rewind
(
fp
)
;
fseek
(
fp
,
116
L
,
0
)
;
for
(
i
=
t
=
0
;
i
&
lt
;
50
;
i
++
)
{
if
((
fgetc
(
fp
))
!=
0
)
{
save
(
fp
,
t
)
;
fseek
(
fp
,
50
L
,
1
)
;
t
++;
}
else
fseek
(
fp
,
61
L
,
1
)
;
}
getch
()
;
printf
(
"
请输入要修改的武将序号,若要退出请输入-1
"
)
;
scanf
(
"
%d
"
, &
amp
;
i
)
;
if
(
i
&
lt
;
0
||
i
&
gt
;
49
)
break
;
else
{
printf
(
"
武力=%-3d,修改y/n?
"
,
genrl
[
i
]
.
wuli
)
;
getchar
()
;
if
(
getchar
()
== '
y
'
)
{
printf
(
"
\
t武力=?
"
)
;
scanf
(
"
%d
"
, &
amp
;
t
)
;
if
(
t
&
lt
;
1
||
t
&
gt
;
255
)
t
=
255
;
genrl
[
i
]
.
wuli
=
t
;
}
printf
(
"
智力=%-3d,修改y/n?
"
,
genrl
[
i
]
.
zhili
)
;
getchar
()
;
if
(
getchar
()
== '
y
'
)
{
printf
(
"
\
t智力=?
"
)
;
scanf
(
"
%d
"
, &
amp
;
t
)
;
if
(
t
&
lt
;
1
||
t
&
gt
;
255
)
t
=
255
;
genrl
[
i
]
.
zhili
=
t
;
}
printf
(
"
体力=%-3d,修改y/n?
"
,
genrl
[
i
]
.
tili
)
;
getchar
()
;
if
(
getchar
()
== '
y
'
)
{
printf
(
"
\
t体力=?
"
)
;
scanf
(
"
%d
"
, &
amp
;
t
)
;
if
(
t
&
lt
;
1
||
t
&
gt
;
255
)
t
=
255
;
genrl
[
i
]
.
tili
=
t
;
}
printf
(
"
技力=%-3d,修改y/n?
"
,
genrl
[
i
]
.
jili
)
;
getchar
()
;
if
(
getchar
()
== '
y
'
)
{
printf
(
"
\
t技力=?
"
)
;
scanf
(
"
%d
"
,&
amp
;
t
)
;
if
(
t
&
lt
;
1
||
t
&
gt
;
255
)
t
=
255
;
genrl
[
i
]
.
jili
=
t
;
}
writeback
(
fp
,
i
)
;
}
}
}
fclose
(
fp
)
;
}
存档文件下载在这里
c,
code,
三国群英传,
游戏修改