⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ai.java

📁 哈利波特与凤凰令的一个小游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    //                   10 404
    //                   11 404
    //                   12 404
    //                   13 401
    //                   14 380
    //                   15 401
    //                   16 401
    //                   17 401
    //                   18 401
    //                   19 401
    //                   20 404
    //                   21 404
    //                   22 401
    //                   23 401
    //                   24 401;
           goto _L4 _L5 _L5 _L4 _L4 _L4 _L6 _L6 _L5 _L5 _L6 _L4 _L4 _L4 _L6 _L5 _L6 _L6 _L6 _L6 _L6 _L4 _L4 _L6 _L6 _L6
_L6:
        break; /* Loop/switch isn't completed */
_L5:
        if(!a.c && h1.l < 0)
            break; /* Loop/switch isn't completed */
_L4:
        int l1;
        int j2;
        if(((q) (h1)).j == 1 || ((q) (h1)).j == 10 || ((z) (h1)).E <= 0)
            break; /* Loop/switch isn't completed */
        if(((q) (a)).j == 25)
        {
            l1 = ((q) (h1)).o - ((q) (a.a)).o >> 4;
            j2 = ((q) (h1)).p - ((q) (a.a)).p >> 4;
        } else
        {
            l1 = ((q) (h1)).o - ((q) (a)).o >> 4;
            j2 = ((q) (h1)).p - ((q) (a)).p >> 4;
        }
        l1 = 18 + l1;
        j2 = 18 + j2;
        if(!a(l1, j2))
            break; /* Loop/switch isn't completed */
        if(h1.e == 0 && h1.f == 0) goto _L8; else goto _L7
_L7:
        if(q.a(h1.e) <= q.a(h1.f) << 1)
        {
            if(q.a(h1.f) > q.a(h1.e) << 1)
            {
                aa.a.drawLine(226 + l1, (1 + j2) - 1, 226 + l1, 1 + j2 + 2);
                aa.a.drawLine((226 + l1) - 1, (1 + j2) - 1, (226 + l1) - 1, 1 + j2 + 2);
                break; /* Loop/switch isn't completed */
            }
            if(h1.e * h1.f <= 0)
            {
                aa.a.drawLine((226 + l1) - 1, 1 + j2 + 1, 226 + l1 + 1, (1 + j2) - 1);
                aa.a.drawLine((226 + l1) - 1, 1 + j2, 226 + l1 + 1, (1 + j2) - 2);
            } else
            {
                aa.a.drawLine((226 + l1) - 1, (1 + j2) - 1, 226 + l1 + 1, 1 + j2 + 1);
                aa.a.drawLine((226 + l1) - 1, (1 + j2) - 2, 226 + l1 + 1, 1 + j2);
            }
            break; /* Loop/switch isn't completed */
        }
          goto _L9
_L8:
        ((q) (h1)).a_;
        JVM INSTR tableswitch 0 3: default 995
    //                   0 931
    //                   1 931
    //                   2 864
    //                   3 864;
           goto _L10 _L9 _L9 _L11 _L11
_L10:
        break; /* Loop/switch isn't completed */
_L11:
        aa.a.drawLine(226 + l1, (1 + j2) - 1, 226 + l1, 1 + j2 + 2);
        aa.a.drawLine((226 + l1) - 1, (1 + j2) - 1, (226 + l1) - 1, 1 + j2 + 2);
        break; /* Loop/switch isn't completed */
_L9:
        aa.a.drawLine((226 + l1) - 1, 1 + j2, 226 + l1 + 2, 1 + j2);
        aa.a.drawLine((226 + l1) - 1, (1 + j2) - 1, 226 + l1 + 2, (1 + j2) - 1);
        j1++;
          goto _L12
_L1:
        aa.a.setColor(255, 255, 255);
        aa.a.drawRect(244, 19, 2, 2);
        g g1;
        (g1 = aa.a[9]).a(11, 226, 1, 0, e1, true, 0);
        g1.a(11, 226, 1 + g1.b[11], 1, e1, true, 0);
        return;
    }

    private static boolean a(int i1, int j1)
    {
        if(i1 < 2 || j1 < 2 || i1 > 38 || j1 > 38)
            return false;
        short word0 = (short)(19 - i1);
        short word1 = (short)(19 - j1);
        return word0 * word0 + word1 * word1 < 256;
    }

    private void m()
    {
        int i1 = a.a + (a.i >> 1);
        int j1 = a.b + (a.j >> 1);
        d = 0;
        e = 0;
        a[d++] = a;
        int l1 = i1 - 600;
        int i2 = j1 - 600;
        int j2 = i1 + 600;
        int k2 = j1 + 600;
label0:
        for(int k1 = 1; k1 < b; k1++)
        {
            if(c[k1] == 0)
                continue;
            q aq[] = a[k1];
            int l2 = 0;
            do
            {
                if(l2 >= c[k1])
                    continue label0;
                q q1 = aq[l2];
                if(k1 == 1 && ((z) ((h)q1)).a.b == 21)
                {
                    if(d < 512)
                    {
                        a[d++] = q1;
                        q1.a_();
                    }
                } else
                if(q1.o <= j2 && q1.o >= l1 && q1.p >= i2 && q1.p <= k2)
                    switch(k1)
                    {
                    case 3: // '\003'
                    case 5: // '\005'
                    case 7: // '\007'
                    case 9: // '\t'
                    case 11: // '\013'
                    case 12: // '\f'
                    default:
                        break;

                    case 2: // '\002'
                        if(e < 200)
                            a[e++] = (x)q1;
                        break;

                    case 4: // '\004'
                        ah ah1;
                        if((ah1 = (ah)q1).a == 5 || ah1.a == 6 || ah1.a == 7 || ah1.a == 8)
                            break;
                        if(ah1.a == 3)
                            ah1.p = (short)(((z) (ah1)).r + 50);
                        // fall through

                    case 1: // '\001'
                    case 6: // '\006'
                    case 8: // '\b'
                    case 10: // '\n'
                    case 13: // '\r'
                        if(d < 512)
                        {
                            a[d++] = q1;
                            q1.a_();
                        }
                        break;
                    }
                l2++;
            } while(true);
        }

    }

    public final void b()
    {
        int i1 = a.a + (a.i >> 1);
        int j1 = a.b + (a.j >> 1);
        e = 0;
        int k1 = i1 - 600;
        int l1 = j1 - 600;
        int i2 = i1 + 600;
        int j2 = j1 + 600;
        q aq[] = a[2];
        for(int k2 = 0; k2 < c[2]; k2++)
        {
            q q1;
            if((q1 = aq[k2]).o <= i2 && q1.o >= k1 && q1.p >= l1 && q1.p <= j2 && e < 200)
                a[e++] = (x)q1;
        }

    }

    private void n()
    {
        for(int i1 = 0; i1 < c; i1++)
        {
            z az[] = a[i1];
            for(int j1 = 0; j1 < 16; j1++)
            {
                z z1;
                if((z1 = az[j1]).i && d < 512 && ((q) (z1)).i != 67)
                    a[d++] = z1;
            }

        }

    }

    private void o()
    {
        int ai1[] = new int[a.j + 50];
        int ai2[] = new int[d];
        for(int i1 = 0; i1 < d; i1++)
        {
            int k2;
            if((k2 = a[i1].p - a.b) < 0 || k2 >= a.j + 50)
                ai1[0]++;
            else
                ai1[a[i1].p - a.b]++;
        }

        for(int j1 = 1; j1 < a.j + 50; j1++)
            ai1[j1] += ai1[j1 - 1];

        for(int k1 = 0; k1 < d; k1++)
        {
            int l2;
            if((l2 = a[k1].p - a.b) < 0 || l2 >= a.j + 50)
                l2 = 0;
            ai2[--ai1[l2]] = k1;
        }

        for(int l1 = 0; l1 < d; l1++)
        {
            if(ai2[l1] == l1)
                continue;
            int i2 = l1;
            q q1 = a[i2];
            int j2;
            for(; ai2[i2] != l1; ai2[j2] = j2)
            {
                a[i2] = a[ai2[i2]];
                j2 = i2;
                i2 = ai2[i2];
            }

            a[i2] = q1;
            ai2[i2] = i2;
        }

    }

    private void h(int i1)
    {
        for(int j1 = 0; j1 < d; j1++)
        {
            q q1;
            (q1 = a[j1]).a(i1);
        }

    }

    private void i(e e1)
    {
        int i1 = aa.k;
        for(int j1 = 0; j1 < d; j1++)
        {
            q q1 = a[j1];
            if(i1 == 18)
                continue;
            if(q1.i == 4)
            {
                if(((ah)q1).a == 3)
                {
                    q1.p = ((z) ((ah)q1)).r;
                    q1.b(e1);
                    q1.p = (short)(((z) ((ah)q1)).r + 50);
                } else
                {
                    q1.b(e1);
                }
            } else
            {
                q1.b(e1);
            }
        }

    }

    private void j(e e1)
    {
        for(int i1 = 0; i1 < d; i1++)
        {
            q q1;
            (q1 = a[i1]).a(e1);
        }

    }

    public final void a(short word0, short word1, short word2, short word3)
    {
        a[c++] = aa.a(word0, word1);
        a[c++] = aa.a(word0, word3);
        a[c++] = aa.a(word2, word1);
        a[c++] = aa.a(word2, word3);
        a[c++] = aa.a(word0, word1);
        a[c++] = aa.a(word2, word1);
        a[c++] = aa.a(word0, word3);
        a[c++] = aa.a(word2, word3);
    }

    private void p()
    {
        c = 0;
        short word0 = c[7];
        for(int i1 = 0; i1 < word0; i1++)
        {
            af af1;
            if((af1 = (af)a[7][i1]).a != 0)
                continue;
            if(((q) (a)).j == 25)
                af1.a(((q) (a.a)).o - 512, ((q) (a.a)).p - 512, ((q) (a.a)).o + 512, ((q) (a.a)).p + 512);
            af1.a(((q) (a)).o - 512, ((q) (a)).p - 512, ((q) (a)).o + 512, ((q) (a)).p + 512);
        }

        short word1 = c[11];
        for(int j1 = 0; j1 < word1; j1++)
            ((j)a[11][j1]).a_();

        if(p == 1)
            a(a.a, a.b, (short)((a.a + a.i) - 1), (short)((a.b + a.j) - 1));
    }

    public final q a(int i1, int j1, int k1, int l1)
    {
        boolean flag = false;
        for(int i2 = 0; i2 < d; i2++)
        {
            q q1;
            if((q1 = a[i2]).i == 1 && ((z) ((h)q1)).E > 0 && q1.j != 1 && q1.j != 10 && q1.j != 18 && ((z) ((h)q1)).a.b != 11 && ((z)q1).a(i1, j1, k1, l1))
                return q1;
        }

        return null;
    }

    public final boolean a(int i1, int j1, int k1, int l1, short word0)
    {
        int i2 = (i1 >= h ? 0 : 0x8) | (i1 <= j ? 0 : 0x4) | (j1 >= i ? 0 : 0x2) | (j1 <= k ? 0 : 0x1);
        int j2 = (k1 >= h ? 0 : 0x8) | (k1 <= j ? 0 : 0x4) | (l1 >= i ? 0 : 0x2) | (l1 <= k ? 0 : 0x1);
        do
        {
            if((i2 | j2) == 0)
                break;
            if((i2 & j2) != 0)
                return false;
            int k2 = k1 - i1;
            int l2 = l1 - j1;
            if(i2 != 0)
            {
                if((i2 & 0x8) != 0)
                {
                    j1 += ((h - i1) * l2) / k2;
                    i1 = h;
                } else
                if((i2 & 0x4) != 0)
                {
                    j1 += ((j - i1) * l2) / k2;
                    i1 = j;
                } else
                if((i2 & 0x2) != 0)
                {
                    i1 += ((i - j1) * k2) / l2;
                    j1 = i;
                } else
                if((i2 & 0x1) != 0)
                {
                    i1 += ((k - j1) * k2) / l2;
                    j1 = k;
                }
                i2 = (i1 >= h ? 0 : 0x8) | (i1 <= j ? 0 : 0x4) | (j1 >= i ? 0 : 0x2) | (j1 <= k ? 0 : 0x1);
            } else
            if(j2 != 0)
            {
                if((j2 & 0x8) != 0)
                {
                    l1 += ((h - k1) * l2) / k2;
                    k1 = h;
                } else
                if((j2 & 0x4) != 0)
                {
                    l1 += ((j - k1) * l2) / k2;
                    k1 = j;
                } else
                if((j2 & 0x2) != 0)
                {
                    k1 += ((i - l1) * k2) / l2;
                    l1 = i;
                } else
                if((j2 & 0x1) != 0)
                {
                    k1 += ((k - l1) * k2) / l2;
                    l1 = k;
                }
                j2 = (k1 >= h ? 0 : 0x8) | (k1 <= j ? 0 : 0x4) | (l1 >= i ? 0 : 0x2) | (l1 <= k ? 0 : 0x1);
            }
        } while(true);
        if(word0 != -1 && d < 63)
            d[d++] = word0;
        return true;
    }

    private int a(int i1, int j1, int k1, int l1)
    {
        h = i1;
        i = j1;
        j = k1;
        k = l1;
        d = 0;
        for(int i2 = 0; i2 < c; i2 += 2)
            a(aa.a(a[i2]) << 6, aa.b(a[i2]) << 6, aa.a(a[i2 + 1]) << 6, aa.b(a[i2 + 1]) << 6, (short)i2);

        return d;
    }

    public static boolean a(int i1, int j1, int k1, int l1, int i2, int j2, int k2, int l2, 
            int ai1[])
    {
        int i3 = i1;
        int j3 = j1;
        int k3 = k1;
        int l3 = l1;
        if(i1 > k1)
        {
            int i4 = i3;
            i3 = k3;
            k3 = i4;
        }
        if(j1 > l1)
        {
            int j4 = j3;
            j3 = l3;
            l3 = j4;
        }
        int k4 = i2;
        int l4 = j2;
        int i5 = k2;
        int j5 = l2;
        if(i2 > k2)
        {
            int k5 = k4;
            k4 = i5;
            i5 = k5;
        }
        if(j2 > l2)
        {
            int l5 = l4;
            l4 = j5;
            j5 = l5;
        }
        if(i3 > i5 || k3 < k4 || j3 > j5 || l3 < l4)
            return false;
        int i6 = k1 - i1;
        int j6 = l1 - j1;
        int k6 = k2 - i2;
        int l6 = l2 - j2;
        int i7 = i2 - i1;
        int j7 = j2 - j1;
        int k7;
        int l7;
        if((l7 = (k7 = j6 * k6 - i6 * l6) < 0 ? -k7 : k7) >> 6 == 0)
            return false;
        int i8 = j7 * k6 - i7 * l6;
        int j8 = i6 * j7 - j6 * i7;
        if(k7 < 0)
        {
            if(i8 > 0 || j8 > 0)
                return false;
            if(i8 < k7 || j8 < k7)
                return false;
        } else
        {
            if(i8 < 0 || j8 < 0)
                return false;
            if(i8 > k7 || j8 > k7)
                return false;
        }
        if(ai1 != null)
            ai1[0] = i8 / (k7 >> 6);
        return true;
    }

    private boolean a(int i1, int j1, int k1, int l1, int ai1[], int ai2[])
    {
        int i2 = 512;
        for(int j2 = 0; j2 < d; j2++)
        {
            short word0 = d[j2];
            int k2 = aa.a(a[word0]) << 6;
            int l2 = aa.b(a[word0]) << 6;
            int i3 = aa.a(a[word0 + 1]) << 6;
            int j3 = aa.b(a[word0 + 1]) << 6;
            int ai3[] = new int[1];
            if(a(i1, j1, k1, l1, k2, l2, i3, j3, ai3) && ai3[0] < i2)
            {
                ai1[0] = i2 = ai3[0];
                ai2[0] = word0;
            }
        }

        return i2 != 512;
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -