.class public Tournament .super java/lang/Object .field private cap I .field private size I .field private numFights I .field private competitors [LCompetitor; .field private gen Ljava/util/Random; ; default constructor .method public (II)V .limit locals 3 .limit stack 3 aload 0 invokespecial java/lang/Object/()V aload 0 iload 1 putfield Tournament/cap I aload 0 iload 2 putfield Tournament/numFights I aload 0 iload 1 anewarray Competitor putfield Tournament/competitors [LCompetitor; aload 0 ldc 0 putfield Tournament/size I aload 0 new java/util/Random dup invokespecial java/util/Random/()V putfield Tournament/gen Ljava/util/Random; return .end method .method public add(LCompetitor;)V .limit locals 2 .limit stack 3 aload 0 getfield Tournament/size I aload 0 getfield Tournament/cap I if_icmpge exit aload 0 getfield Tournament/competitors [LCompetitor; aload 0 getfield Tournament/size I aload 1 aastore aload 0 dup getfield Tournament/size I ldc 1 iadd putfield Tournament/size I exit: return .end method .method public get(I)LCompetitor; .limit locals 2 .limit stack 2 iload 1 iflt nul aload 0 getfield Tournament/size I iload 1 if_icmple nul aload 0 getfield Tournament/competitors [LCompetitor; iload 1 aaload goto exit nul: aconst_null exit: areturn .end method .method public run()V .limit locals 6 .limit stack 3 ldc 0 istore 1 loop: iload 1 aload 0 getfield Tournament/numFights I if_icmpge exit aload 0 getfield Tournament/size I ldc 1 if_icmple tfc aload 0 getfield Tournament/gen Ljava/util/Random; aload 0 getfield Tournament/size I invokevirtual java/util/Random/nextInt(I)I istore 2 aload 0 getfield Tournament/gen Ljava/util/Random; aload 0 getfield Tournament/size I invokevirtual java/util/Random/nextInt(I)I istore 3 iload 2 iload 3 if_icmpne cont iload 3 ldc 1 iadd aload 0 getfield Tournament/size I irem istore 3 cont: aload 0 iload 2 invokevirtual Tournament/get(I)LCompetitor; astore 4 aload 0 iload 3 invokevirtual Tournament/get(I)LCompetitor; astore 5 aload 4 aload 5 invokevirtual Competitor/fight(LCompetitor;)V aload 5 aload 4 invokevirtual Competitor/fight(LCompetitor;)V iload 1 ldc 1 iadd istore 1 goto loop tfc: getstatic java/lang/System/out Ljava/io/PrintStream; ldc "Too few competitors!" invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V exit: return .end method .method public display()V .limit locals 2 .limit stack 3 ldc 0 istore 1 loop: iload 1 aload 0 getfield Tournament/size I if_icmpge exit getstatic java/lang/System/out Ljava/io/PrintStream; aload 0 iload 1 invokevirtual Tournament/get(I)LCompetitor; invokevirtual java/io/PrintStream/println(Ljava/lang/Object;)V iload 1 ldc 1 iadd istore 1 goto loop exit: return .end method .method public static main([Ljava/lang/String;)V .limit locals 3 .limit stack 6 new Tournament dup ldc 50 ldc 100 invokespecial Tournament/(II)V astore 1 ldc 0 istore 2 loop: iload 2 aload 1 getfield Tournament/cap I if_icmpge exit iload 2 ldc 3 irem ifne drag aload 1 new Warrior dup new java/lang/StringBuffer dup ldc "Warrior " invokespecial java/lang/StringBuffer/(Ljava/lang/String;)V iload 2 invokestatic java/lang/String/valueOf(I)Ljava/lang/String; invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer; invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String; invokespecial Warrior/(Ljava/lang/String;)V invokevirtual Tournament/add(LCompetitor;)V goto cont drag: iload 2 ldc 3 irem ldc 1 if_icmpne rob aload 1 new Dragon dup new java/lang/StringBuffer dup ldc "Dragon " invokespecial java/lang/StringBuffer/(Ljava/lang/String;)V iload 2 invokestatic java/lang/String/valueOf(I)Ljava/lang/String; invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer; invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String; invokespecial Dragon/(Ljava/lang/String;)V invokevirtual Tournament/add(LCompetitor;)V goto cont rob: aload 1 new Robot dup new java/lang/StringBuffer dup ldc "Robot " invokespecial java/lang/StringBuffer/(Ljava/lang/String;)V iload 2 invokestatic java/lang/String/valueOf(I)Ljava/lang/String; invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer; invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String; invokespecial Robot/(Ljava/lang/String;)V invokevirtual Tournament/add(LCompetitor;)V cont: iload 2 ldc 1 iadd istore 2 goto loop exit: aload 1 invokevirtual Tournament/run()V aload 1 invokevirtual Tournament/display()V return .end method