vb.net 教程 4-9 二进制文件读写 游戏存档修改器
来源:互联网 发布:mac手游模拟器 编辑:程序博客网 时间:2024/05/29 13:01
前几节学习了读取二进制文件,实际写入二进制文件操作差不多,本节制作一个简单的游戏存档修改器,来说明二进制文件的写入。
记得我的博客第一篇文章是写的《仙剑奇侠传3 外传》存档文件修改器(请参看:《[vb6]仙剑3外传的存档修改器》),当时是用vb6写的。
想想也是十多年过去了。
十多年过去已经很少在电脑上玩游戏了,但是还保留了 大富翁4超时空之旅。
刚上大学那会儿,电脑还是486、586,还没有win32,不过已经有了大富翁、仙剑这样的优秀游戏,
我那时候就开始玩大富翁2和仙剑,现在还记忆犹新。
好了不说闲话,进入正题。
大富翁4的存档文件在安装目录下,从 SAVE0.DAT至SAVE6.DAT,其中Save0.dat是自动存档。
玩家相关数据和存放位置:
现金在 2C,长度为3字节。
存款在 30,长度为3字节。
点卷在 40,长度为2字节。
窗体设计界面如下:
OpenFileDialog的设置如下:
全部代码如下:
Imports System.IOPublic Class Form3 Dim savefile As String Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click If ofdSaveFile.ShowDialog <> DialogResult.OK Then Exit Sub End If savefile = ofdSaveFile.FileName Call readSave() End Sub Private Sub readSave() Dim intXj As Integer = 0 Dim intCk As Integer = 0 Dim intDq As Int16 = 0 Dim fs As New FileStream(savefile, FileMode.Open, FileAccess.Read) Try If fs.CanSeek Then Dim br As New BinaryReader(fs) fs.Seek(44, SeekOrigin.Begin) intXj = br.ReadInt32() intCk = br.ReadInt32() fs.Seek(12, SeekOrigin.Current) intDq = br.ReadInt16() br.Close() End If fs.Close() lblInfo.Text = "读取存档完毕" Catch ex As Exception lblInfo.Text = "读取存档出错:" & ex.Message End Try txtXj.Text = intXj.ToString txtCk.Text = intCk.ToString txtDq.Text = intDq.ToString End Sub Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click Dim intXj As Integer = Integer.Parse(txtXj.Text) Dim intCk As Integer = CInt(txtCk.Text) Dim intDq As Int16 = CType(txtDq.Text, Int16) Using fs As New FileStream(savefile, FileMode.Open, FileAccess.Write) Try If fs.CanSeek Then Dim bw As New BinaryWriter(fs) bw.Seek(44, SeekOrigin.Begin) '定位流位置,相对于流开始的44字节 bw.Write(intXj)'写入一个Integer数据 bw.Write(intCk)'写入一个Integer数据 bw.Seek(12, SeekOrigin.Current) '相对当前流的12个字节 bw.Write(intDq)'写入一个int16数据 bw.Close() End If lblInfo.Text = "修改存档完毕" Catch ex As Exception lblInfo.Text = "写入存档出错:" & ex.Message End Try End Using End SubEnd Class
运行时如下:
读取情况:
修改情况:
修改后在游戏里面载入存档:
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看vb.net 教程 目录
阅读全文
0 0
- vb.net 教程 4-9 二进制文件读写 游戏存档修改器
- vb.net 教程 4-9 二进制文件读写 1
- vb.net 教程 4-9 二进制文件读写 2
- vb.net 教程 4-9 二进制文件读写 3
- 读写二进制文件 VB.NET
- VB.net读写二进制文件
- VB二进制文件读写
- VB二进制文件读写
- vb.net 教程 4-8 文本文件读写 4
- vb.net 教程 4-8 文本文件读写 1
- vb.net 教程 4-8 文本文件读写 2
- vb.net 教程 4-8 文本文件读写 3
- vb.net 教程 4-8 文本文件读写 5
- IC卡读写器VB.NET源代码
- [VB.NET]读写ini
- [VB.NET]读写注册表
- vb.net读写文本
- vb.net 读写文件
- 不同文件夹下的乱序数据集处理
- AbstractQueuedSynchronizer 源码分析
- 暑假 D1 T2 咖啡的艺术
- Ubuntu下安装Circos
- html&css练习表
- vb.net 教程 4-9 二进制文件读写 游戏存档修改器
- API之Class学习
- 侧滑,日夜,第三方登录
- POJ 3042 Grazing on the Run (三维区间DP)【区间DP模板】
- 封装以后如何修改和得到属性
- cocos2dx-3.10 Cocos Studio 启动错误解决办法
- 生产树计数
- java实现通过归并排序计算数组逆数对个数
- python安装心得