当前位置:   article > 正文

植物大战僵尸修改器 - 简易版_qt 植物大战僵尸外挂 源码 github

qt 植物大战僵尸外挂 源码 github

一Java小白努力钻研花样繁多的文件读写操作——终于搞好啦(*^▽^*)

多说无益,直接上代码吧:

  1. import java.io.*;
  2. import java.util.Scanner;
  3. public class Hello {
  4. public static void main(String[] args) throws IOException {
  5. // 读取当前数据
  6. // 打开存档文件
  7. FileInputStream fis = new FileInputStream
  8. ("C:\\ProgramData\\PopCap Games\\PlantsVsZombies\\userdata\\user1.dat");
  9. int[] off = { -1, 0x04, 0x09, 0x08, 0x304, 0x0C}; // 测试得到的偏移量
  10. int read = 0;
  11. int[] reading = {0,0,0,0,0};
  12. for (int i = 1; i <= 5; i++) {
  13. fis.skip(off[i] - off[i-1] - 1);
  14. read = fis.read();
  15. reading[i - 1] = read;
  16. System.out.println(read);
  17. }
  18. fis.close();
  19. fis = new FileInputStream
  20. ("C:\\ProgramData\\PopCap Games\\PlantsVsZombies\\userdata\\user1.dat");
  21. byte[] b = new byte[1024];
  22. fis.read(b);
  23. fis.close();
  24. // 用户输入
  25. Scanner scan = new Scanner(System.in);
  26. int input = 0;
  27. while (true) {
  28. System.out.printf("菜单:\r\n");
  29. System.out.printf
  30. ("1.当前关卡:%d\r\n2.当前金钱:%d\r\n3.解谜模式:%d\r\n4.无尽模式:%d\r\n",
  31. reading[0], 10*(256*reading[1]+reading[2]), reading[3], reading[4]);
  32. System.out.printf("输入你要修改的选项(输入0以退出):\r\n");
  33. input = scan.nextInt();
  34. System.out.flush();
  35. if (input >= 1 && input <= 4) {
  36. System.out.printf("请输入你的目标数据:\r\n");
  37. int temp = scan.nextInt();
  38. if (input == 1) reading[0] = temp;
  39. else if (input >= 3) reading[input] = temp;
  40. else {
  41. reading[1] = temp / 10 / 256;
  42. reading[2] = temp / 10 % 256;
  43. }
  44. }
  45. else if (input == 0) {
  46. break;
  47. }
  48. else {
  49. System.out.printf("无效参数!请重新输入.\r\n");
  50. continue;
  51. }
  52. }
  53. scan.close();
  54. // 写入修改后的数据
  55. FileOutputStream fos = new FileOutputStream
  56. ("C:\\ProgramData\\PopCap Games\\PlantsVsZombies\\userdata\\user1.dat");
  57. for (int i = 1; i <= 5; i++) {
  58. b[off[i]] = (byte) reading[i - 1];
  59. }
  60. fos.write(b);
  61. fos.close();
  62. }
  63. }

跑出来长这样:

  1. 菜单:
  2. 1.当前关卡:41
  3. 2.当前金钱:5120
  4. 3.解谜模式:1
  5. 4.无尽模式:1
  6. 输入你要修改的选项(输入0以退出):
  7. 1
  8. 请输入你的目标数据:
  9. 45
  10. 菜单:
  11. 1.当前关卡:45
  12. 2.当前金钱:5120
  13. 3.解谜模式:1
  14. 4.无尽模式:1
  15. 输入你要修改的选项(输入0以退出):
  16. 2
  17. 请输入你的目标数据:
  18. 10240
  19. 菜单:
  20. 1.当前关卡:45
  21. 2.当前金钱:10240
  22. 3.解谜模式:1
  23. 4.无尽模式:1
  24. 输入你要修改的选项(输入0以退出):
  25. 3
  26. 请输入你的目标数据:
  27. 1
  28. 菜单:
  29. 1.当前关卡:45
  30. 2.当前金钱:10240
  31. 3.解谜模式:1
  32. 4.无尽模式:1
  33. 输入你要修改的选项(输入0以退出):
  34. 4
  35. 请输入你的目标数据:
  36. 0
  37. 菜单:
  38. 1.当前关卡:45
  39. 2.当前金钱:10240
  40. 3.解谜模式:1
  41. 4.无尽模式:0
  42. 输入你要修改的选项(输入0以退出):
  43. 0
  44. 进程已结束,退出代码为 0

之前还在想怎么删除文件,后面发现只需要改一下FileOutputStream的append参数就可以了——默认为false就够用~

看看效果: 

END

参考资料:

java删除文件目录及文件_Java删除文件,目录_从零开始的教程世界-CSDN博客

java 标准输入System.in_gt.liu的博客-CSDN博客

java如何指定起始位置和读取长度读取InputStream - OSCHINA - 中文开源技术交流社区

java:system根据输入的内容,然后输出(字节流) - 穆晟铭 - 博客园

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/706866
推荐阅读
相关标签
  

闽ICP备14008679号