三国群英传3

这是一个很经典的游戏系列,在我本科的时候,常常和同学一起游戏,通宵达旦,比拼谁能早日统一全中国。游戏里可以自建武将,但是挑来跳去,很难挑到一个武力高强,又不是白痴的人物。于是乎,偶就偷偷摸摸翻了几本c语言的教程,写了一段小程序,用来修改自建武将的资料。现在看来,那个时候面向过程的编程方法着实可爱 : )  源代码如下:

下载: sango.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, 三国群英传, 游戏修改
isdox?i=338f080019c2eaaa26406098ac32c9ea isdox?i=d0aa29dca8f8a7d0d537d266f3f008c0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值