精华内容
下载资源
问答
  • 任务一:植物大战僵尸 1. 修改关卡到5-1 2. 修改金币到10万** 任务二:二进制画图 打开https://studio.code.org/s/pixelation 0是黑,1是白。

    环境

    Win10 64
    IntelliJ IDEA + Plugin(BinEd) /!/!/!\不好用/!/!/!\

    任务一:植物大战僵尸

    users.dat 中第一行 54 65 73 74 十六进制转换为ASCII码对应"Test"用户名
    在这里插入图片描述
    修改这些代码即可改用户名
    在这里插入图片描述
    在这里插入图片描述

    1. 修改关卡到5-1
    玩了一关发现user1中第一行第四列数字变成了2,应该也是按照十六进制的方法命名的
    这里修改成***33(十六进制的51)*** 重新进入游戏发现关卡变成***6-1***
    重新修改成29十六进制的41,进入关卡后成功
    在这里插入图片描述

    2. 修改金币到10万
    这里偷懒了,看到其他人发现第八列数字代表金币数,进位后自动将高位填充到下一列
    十六进制01 86 A0代表100,000

    • 08列 填写A0

    • 09列 填写86

    • 0A列 填写01

      运行游戏完成任务
      在这里插入图片描述
      在这里插入图片描述

    任务二:二进制画图

    打开https://studio.code.org/s/pixelation
    0是黑,1是白。
    在这里插入图片描述

    参考

    https://lilongsy.blog.csdn.net/article/details/115499155


    展开全文
  • 第9和8的位置改为10000(0x27 10): 再有进位就放到A列,例如第A、9、8列的位置改为100000(0x01 86 A0): 任务二:二进制画图 打开https://studio.code.org/s/pixelation 0是黑,1是白。 参考 ...

    环境

    Win10 64
    WinHex

    任务一:植物大战僵尸

    修改植物大战僵尸关卡到5-1和金币10万。

    用户文件位置

    首先去安装目录寻找用户文件位置,没找到,然后用关键词PlantsVsZombies搜索注册表regeditC:\ProgramDataC:\Users\Administrator\AppData。在C:\ProgramData\PopCap Games\PlantsVsZombies\userdata找到了用户数据文件。

    修改文件

    大概看了下,users.dat是所有用户的配置文件。user1.dat是第一个用户的配置文件。我们要修改关卡和金币,就是修改user1.dat,找到关卡和金币的位置。
    先玩儿到关卡1-3,看下数据:
    看到第一行04列的0x03(03)跟关卡1-3有点关系。
    接下来改为0x0E(14)
    1
    大概就摸清规律了:关卡是十进制的十位数加一,加上个位数字
    0x2A(42),就是关卡是5-2:
    1
    0x29(41),就是关卡是5-1:
    1

    修改金币数

    在玩几把,看到第8列是金币的1/10。
    如果有进位,则把高位填充到第9列。
    1
    第9和8的位置改为10000(0x27 10):
    1

    再有进位就放到A列,例如第A、9、8列的位置改为100000(0x01 86 A0):
    1

    任务二:二进制画图

    打开https://studio.code.org/s/pixelation
    0是黑,1是白。

    1

    参考

    https://ccc.cloud.csdn.net/

    展开全文
  • 也就是能操作的大小 从第17位开始则是对图像内容进行设定,每个数字代表一个空格,1代表...绘制图画是一个技术含量不高但是及其花费时间的过程,重点在于理解二进制/表格/图像之间的关系 联系方式: xzj_gatech@163.com

    登录网站https://studio.code.org/s/pixelation

    注册账号时选择student和21+(年龄)

    进入pixelation主页后有一个讲解视频(英文,无字幕)

    大概内容是:

    1. 在操作台可以随意换行,空格,不会对输出图片产生影响
    2. 前8位和前9-16位对应图片的长宽,也就是能操作的大小
    3. 从第17位开始则是对图像内容进行设定,每个数字代表一个空格,1代表白色0代表黑色
    4. 如图右侧所显示的是操作区,目前处于readable format,raw format所占空间(字面意思)较小,但是不利于阅读和更改

    绘制图画是一个技术含量不高但是及其花费时间的过程,重点在于理解二进制/表格/图像之间的关系

    联系方式:

    xzj_gatech@163.com

    展开全文
  • 输入的n代表敌人数,for循环是为了枚举所有的情况 比如输入n=5 当i=3时,转化为二进制为00011 代表第一个和第二个敌人已经被杀了 第三个第四个第五个还没杀死 实际上二进制枚举的范围是00000~11111 ③ if(i&(1)) ...

    Description

    At 184~280 A.D ,there were many kingdoms in China. Three strongest among them are “Wei”, “Shu”, “Wu”. People call this period as “Three Kingdoms”.
    HH is a super “Three Kingdoms” fan, because at this period there were many heroes and exciting stories. Among the heroes HH worships LvBu most.
    LvBu is the God of War and is also intelligent, but his ambition is too big while enemies are too powerful .Many monarchs wanted to kill him.
    At 198 A.D ,CaoCao fought with LvBu at Xuzhou.Though Lvbu is the God of War ,CaoCao had so many generals: Xuchu,DianWei XiahouChun……Facing so many heroes ,could LvBu beat all of them?
    在这里插入图片描述
    Given the LvBu’s ATI, DEF, HP, and enemies’ ATI, DEF,HP, experience (if LvBu killed one of his enemies, he can get that experience ,and if his experience got more than or equal to 100*level,he would level-up and become stronger) and the In_ATI,In_DEF,In_HP(indicating when LvBu levels up,his ability will increase this point).
    Each turn LvBu will choose an enemy to fight. Please help LvBu find a way to beat all of enemies and survive with the max HP.
    Here’s a fight between LvBu and A:
    If LvBu attack A, A will lose Max(1,LvBu’s ATI- A’s DEF) hp;
    If A survived, he will give LvBu Max(1,A’ATI- LvBu’DEF) injury.
    If LvBu is still alive, repeat it untill someone is dead(hp <= 0).
    LvBu’s initial level is 1 and experience is 0,and he can level up many times.

    Input

    The input contains at most 20 test cases.
    For each case , the first line contains six intergers ,indicating LvBu’s ATI,DEF,HP and In_ATI,In_DEF,In_HP.
    The next line gives an interger N(0<N<=20),indicating the number of the enemies .
    Then N lines followed, every line contains the name(the length of each name is no more than 20),ATI,DEF,HP, experience(1<experience<=100).

    Output

    If LvBu is dead output “Poor LvBu,his period was gone.”
    Or output the maximum HP left.

    Sample Input

    100 80 100 5 5 5
    2
    ZhangFei 95 75 100 100
    XuChu 90 90 100 90

    100 75 100 5 5 5
    1
    GuanYu 95 85 100 100

    Sample Output

    30

    Poor LvBu,his period was gone.

    分析


    题意:
    给出战神吕布的初始攻击力ATI、防御力DEF、生命值HP、每升一级增加的攻击力In_ATI,增加的防御力In_DEF和增加的生命值In_HP。然后给出n个敌人的攻击力、防御力、生命值和杀死该单位能获得的经验值EXP。

    吕布的初始经验值EXP是0,初始等级level是1,每当EXP>=level*100时就会升级。

    在吕布LvBu和敌人A之间的战斗有3条规则

     1.吕布攻击A,A失去 Max(1,LvBu’s ATI- A’s DEF) HP

     2.A攻击吕布,吕布失去Max(1,A’ATI- LvBu’DEF)HP

      3.战斗持续到任意一方死亡

    如果吕布能够将全部敌人杀死,并且自己不死,那么输出能够余下的最大HP,否则输出"Poor LvBu,his period was gone."


    看完了题意,应该是对本题有了清晰的思路了,现在我来介绍一下状态压缩到底是啥

    状态压缩动态规划(简称状压dp)是另一类非常典型的动态规划,通常使用在NP问题的小规模求解中,虽然是指数级别的复杂度,但速度比搜索快,其思想非常值得借鉴。

    为了更好的理解状压dp,需要了解位运算相关的知识。

    1.’ & ’符号,x&y,会将两个十进制数在二进制下进行与运算,然后返回其十进制下的值。例如3(11)&2(10)=2(10)。

    2.’ | ’符号,x|y,会将两个十进制数在二进制下进行或运算,然后返回其十进制下的值。例如3(11)|2(10)=3(11)。

    3.’ ^ ’符号,x ^ y,会将两个十进制数在二进制下进行异或运算,然后返回其十进制下的值。例如3(11)^2(10)=1(01)。

    4.’ << ’符号,左移操作,x<<2,将x在二进制下的每一位向左移动两位,最右边用0填充,x<<2相当于让x乘以4。相应的,’>>’是右移操作,x>>1相当于给x/2,去掉x二进制下的最有一位。
    在这里插入图片描述
    这四种运算在状压dp中有着广泛的应用,常见的应用如下:

    1.判断一个数字x二进制下第i位是不是等于1。

    方法:if ( ( ( 1 << ( i - 1 ) ) & x ) > 0)

    将1左移i-1位,相当于制造了一个只有第i位上是1,其他位上都是0的二进制数。然后与x做与运算,如果结果>0,说明x第i位上是1,反之则是0。

    2.将一个数字x二进制下第i位更改成1。

    方法:x = x | ( 1<<(i-1) )

    证明方法与1类似,此处不再重复证明。

    3.把一个数字二进制下最靠右的第一个1去掉。

    方法:x=x&(x-1)

    看完上面关于状态压缩的知识,是不是又学到了一点东西?接着,我将结合代码对此题进行分析

    ①首先,题目告诉了我们最多有20个敌人,那么我们dp数组应该开多大?
    显然1<<20 学过上面知识后,把它转化成二进制的话就是1后面20个0 这20个人代表最多的20个敌人 我们用二进制下的0表示没杀死这个敌人 1代表杀死了这个敌人

    ②for(int i=0;i<(1<<n);i++) 这段代码什么意思?
    输入的n代表敌人数,for循环是为了枚举所有的情况 比如输入n=5 当i=3时,转化为二进制为00011 代表第一个和第二个敌人已经被杀了 第三个第四个第五个还没杀死 实际上二进制枚举的范围是00000~11111

    ③ if(i&(1<<j)) 这段代码代表什么意思?
    学习完上面知识后,我们知道了&操作就是判断 i 的二进制下的第j位是否1 实际上就是判断第j个敌人是否被杀死

    ④if(dp[(1<<n)-1])这段代码代表什么意思?
    1<<n代表的二进制下1左移n位,向右补0 假设n=3 就是1000 二进制减1 则为0111 就是判断最后杀死了所有敌人后所剩的HP是否还大于0 如果小于0 GG

    题目一些坑点

    ①杀死敌人所获得的经验总和/100=我们可以升的等级 但是起始等级为1 我们最后还要加1

    ②杀死敌人的话,我们可以算出一共要砍几刀,假设吕布需要砍 t 刀敌人才会死,那么吕布扣的血不是 t 次而是 t - 1 次,因为最后一次已经被砍死了

    ③关于升级其实就是100经验升级一次,题目意思是总的经验EXP超过当前等级的100倍 就是每100经验升级


    AC
    在这里插入图片描述

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define mst(a,b) memset(a,b,sizeof(a))
    using namespace std;
    int dp[1<<20]; //dp数组 代表在某一状态下的最大HP
    const int maxn=20+5;
    int A[maxn],D[maxn],H[maxn],E[maxn];
    char temp[maxn];
    int ATI,DEF,HP,IN_ATI,IN_DEF,IN_HP;
    int main()
    {
    	//注意,此题最好用scanf和printf 用cin和cout就算用了加速代码时间上大约多了10倍。。。
        while(~scanf("%d%d%d%d%d%d",&ATI,&DEF,&HP,&IN_ATI,&IN_DEF,&IN_HP))
        {
            int n;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
                scanf("%s%d%d%d%d",temp,&A[i],&D[i],&H[i],&E[i]);
            mst(dp,0);
            dp[0]=HP;
            for(int i=0;i<(1<<n);i++){  //枚举所有情况 例n=4 从0000~1111
                if(dp[i]<=0)   //当前HP小于0 不用后续操作了
                    continue;
                int exp=0;
                for(int j=0;j<n;j++) 
                    if(i&(1<<j))   //判断第j位敌人是否杀死
                    exp+=E[j];
                int leveup=exp/100;  //算出杀的敌人够我们升多少级
                int ati=ATI+leveup*IN_ATI;
                int def=DEF+leveup*IN_DEF;
                int curleveup=leveup+1;  //加上起始等级1 
                for(int j=0;j<n;j++){
                    if(i&(1<<j))   //尝试去杀其他人 但是我们要确保第j位没有杀死过
                        continue;
                    int inj=max(1,ati-D[j]);
                    int t=H[j]/inj;  //算出吕布和敌人一共打了几次
                    if(H[j]%inj)
                        ++t;
                    int dd=(t-1)*max(1,A[j]-def);  //t-1是因为最后一次杀死了 所以吕布不会扣血
                    if(dd>=dp[i])
                        continue;
                    int curdp=dp[i]-dd;
                    if(exp+E[j]>=curleveup*100)  //判断是否能够升级
                        curdp+=IN_HP;
                    int ans=i+(1<<j);
                    dp[ans]=max(dp[ans],curdp); //更新最大的HP
                }
            }
            if(dp[(1<<n)-1])  //杀完所有敌人后HP大于0
                printf("%d\n",dp[(1<<n)-1]);
            else
                printf("Poor LvBu,his period was gone.\n");
        }
        return 0;
    }
    

    学如逆水行舟,不进则退

    展开全文
  • 二进制画一条黑线,bmp文件的存储原理 1.了解bmp文件的存储原理 bmp详解 1.1 要先了解bmp文件中二进制的数据代表的什么内容,具体看超链接 1.2 注意 最重要的就是要明白 1C-1D:0008h = 8, 表示每个像素占8个...
  • 有些时候,我们需要画图后的二进制数据流,matplotlib没有提供相关的api,通过源码查看与百度,得到下面此方法 import matplotlib.pyplot as plt import numpy as np import io x=np.arange(10) y=x #plt.plot(x,y)...
  • 基于GTK的画图软件-输出到二进制文件中,基于GTK的画图软件-输出到二进制文件中
  • matplotlib画图二进制数据流, 与 图片二进制 转图片的数组形式
  •  首先介绍 二进制转换十进制二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:101100100,转换为10进制为:356用横式计算(从右往左算)0×20+0×21+1×22+0×23+0×24+1×25+1×26...
  • C语言实现信号打包成二进制文件并在Matlab中读取并画图(VS版)前些天老师布置了一道作业:在main.cpp里面生成了两个信号s1和s2,将这两个信号的数据用二进制形式写道文件signal.dat里面,然后用Matlab从该文件中读取...
  • 我们大家学过,或者了解过计算机的都知道,在我们计算机中输入的是十进制数,存储的是二进制数,然后输出的又是十进制数。 这个过程无非就是二进制转十进制,十进制转二进制。 那么,这种算法又是怎么规定的呢? ...
  • 使用Python读取二进制文件

    万次阅读 多人点赞 2018-03-13 09:00:25
    目标:目标文件为一个float32型存储的二进制文件,按列优先方式存储。本文使用Python读取该二进制文件并使用matplotlib.pyplot相关工具画出图像 工具:Python3, matplotlib,os,struct,numpy 1. 读取二进制文件...
  • JAVA之读取二进制文件

    万次阅读 2018-10-26 22:56:03
    目的在于:将一个二进制文件中的数据读取出来,其中数据包括点的位置信息和压力值及状态。将这些数据画作图像的形式展示。 本小程序分为以下几部分: (1)读取二进制文件;其中需要考虑二进制文件读出来的是十...
  • ………………………………………………………………………二进制的内心小剧场………………………………………………………………………………… ……………………………………………………………………………………...
  • 一.本文所涉及的内容... 二进制 → 十进制 八进制 → 十进制 十六进制 → 十进制 (十进制) → (二、八、十六进制) 十进制 → 二进制 十进制 → 八进制 十进制 → 十六进制 (...
  • 有没有办法将HTML Canvas的内容作为二进制数据读取?目前我有以下HTML来显示输入文件和它下面的画布:Get Image ContentInput:Canvas我然后设置我的输入文件以正确设置画布,这工作正常:$('#fileInput').on('change', ...
  • 什么是计算机二进制

    千次阅读 2017-01-20 14:16:35
    很多专业人士从第一次学计算机,就开始接触二进制,发现书上说的基本都是术语,不是“人话”,马上晕倒。二进制是什么?什么“逢二进一”,这都不重要,狗屎。只要是人发明的东西,用人话就能讲清楚。咱们就用人话,...
  • 十进制转化成二进制(C++)

    千次阅读 多人点赞 2019-07-22 14:50:31
    十进制转化为二进制的方法,在数学上是除二取余法,如下图(自己在画图上画的,有点子丑,,,): 我这是以36为例,用36不断的去除二取余,左边就是余数,最后从下至上把余数连起来,就是我们要得到的结果,就是...
  • 来吧,坐下聊先前在前文《老大说:谁要再用double定义商品金额,就自己收拾东西走...”当时写那篇文章的时候,我原以为大家对于小数转二进制的换算早已了然于胸,所以也就没有给出具体的换算过程。结果文章发出来后...
  • 用matlab编写的经典二进制编码遗传算法算例,求函数最大值并画图,附带注释。
  • 遗传算法之二进制编码

    万次阅读 热门讨论 2017-09-05 19:33:43
    title: 遗传算法之二进制编码 tags: 遗传算法 author: Gentleman 新博客地址:遗传算法之二进制编码 遗传算法的基本步骤 遗传算法 GA 的流程如图所示: Created with Raphaël 2.2.0 编码 把所需要选择的特征进行...
  • PHP笔记一:图片转二进制数据

    千次阅读 2019-07-15 16:33:56
    这次记录的东西很简单,就是把图片转成二进制数据存到数据库中,以及取出数据输出图片显示。 图片转二进制 方式一: $img = '111111.jpg'; $fp = fopen($img, 'rb'); $content = fread($fp, filesize($img));//...
  • 1.二进制与十进制之间的转换 二进制转十进制 方法:当前的数字 * 2 ^ 当前数字的位数(程序员从0开始),最后相加。 1010(2)-------10(10) 0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 1 * 2^3 =0 + 2 + 0 + 8 = 10 ...
  • 二进制就是计算机技术中广泛采用的一种数制,由(0,1)组成。你可以广泛的认为,每一个 0,1 都(存储在)对应着一个比特位(bit),而由这些由例如:01001011就是二进制。(计算机硬件通电的时,会产生电信号,而用...
  • 二进制(逢2进1) 0 1 如:0 1 2 -> 10, 3 -> 11, 4->100, 5->101 八进制(逢8进1) 0 1 2 3 4 5 6 7 十六进制(逢16进1) (一个十六进制对应四个二进制的位置) 0 1 2 3 4 5 6 7 8 9 A(10) B...
  • fread函数可以读取二进制文件的数据,并将数据存入矩阵。 关于matlab操作文件的几个函数有文介绍:matlab文件操作fopen,fseek,fread,fclose等 针对 ” 2)读二进制文件 ” 这部分内容,我写些和上面文章里不一样的。...
  • 谈这个问题,我们首先看一下什么样的文件是文本文件,而什么样的文件又是二进制文件。 什么文件是文本文件呢?我们常见的txt, html, javascript, css, java,python等文件都是文本文件,他们都可以通过windows中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,542
精华内容 6,216
关键字:

二进制画图