判断游戏胜者-Who Is the Winner

描述

AliceBob在玩一个游戏,每一局中他们每人获得一个16进制数串,计算它对应的二进制数串中有多少个连续的1序列块(单个的1也算作序列块)。块数多者胜利,请判断游戏的胜者并输出,若平局则输出Tie,比如样例中的第一组数据为Alice: 0xfa425  Bob: 0xab3672Alice的数据转换为2进制串后为11111010010000100101其中有6个连续的1序列块。Bob的数据转换为2进制串后为 101010110011011001110010   其中有8个序列块,故胜者为Bob

输入
第一行为游戏局数正整数n,接下来n行每行由两部分组成,前者是Alice获得的16进制数串,后者是Bob获得的16进制数串,中间用空格隔开。
输出
每一行输出一局的胜者。
样例输入
2
0xfa425 0xab3672
0x52c6 0xf429
样例输出
Bob
Tie



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package javatest2;
import javax.swing.JOptionPane;
/**
 *
 * @author Sapphire
 */
public class JavaTest2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        String times=JOptionPane.showInputDialog("请输入游戏局数");
        int n=Integer.parseInt(times);
        for(;n>0;n--){
            String Alice=JOptionPane.showInputDialog("请输入Alice的数字");
            String str1=hexString2binaryString(Alice);
            System.out.println(str1);
            int a=Count1(str1);
            System.out.println(a);
            String Bob=JOptionPane.showInputDialog("请输入Bob的数字");
            String str2=hexString2binaryString(Bob);
            System.out.println(str2);
            int b=Count1(str2);
            System.out.println(b);
           if(a==b)
                System.out.println("Tie");
           else if(a<b)
                System.out.println("Bob");
           else
                System.out.println("Alice");
        }
    }
   public static String hexString2binaryString(String hexString)
 {
  if (hexString == null)
   return null;
  String bString = "", tmp;
  for (int i = 2; i < hexString.length(); i++)
  {
   tmp = "0000"
     + Integer.toBinaryString(Integer.parseInt(hexString
       .substring(i, i + 1), 16));
   bString += tmp.substring(tmp.length() - 4);
  }
  return bString;
 }
   public static int Count1(String num)
 {
            int n=0;
            char[] t=new char[num.length()];
            for(int i=0;i<num.length();i++)
             t[i]=num.charAt(i);
            for(int i=1;i<num.length();i++){
                if(t[i]=='0') {
                    if(t[i-1]=='1'){                   
                        n++;
                    }
                }                
            }
            if(t[num.length()-1]=='1')
                n++;
  return n;
 }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在五花八门的游戏分类中,益智游戏是不可或缺的一大板块;而在益智游戏这个分类中,消除合成类游戏又是当之无愧的No.1。从考古级别的《俄罗斯方块》到现在风靡全国的《开心消消乐》,消除合成类游戏经久不衰,并且不断地涌现出新的经典作品,带给我们新的启发和乐趣。作为Unity3D的初级开发者,从头到尾独立完成一款简单的2D棋盘消除合成小游戏是你初级实战的最好选择。既能全面而详细的检验你的基础框架能力、C#编程能力、UGUI适配技巧,又可以在此基础上,较为深入的学习协程方法、DoTween插件和消除合成类的核心算法,一举数得。一言以蔽之,消除合成类游戏不难,但要写好却并不容易。它琐碎的功能逻辑、层出不穷的延时操作以及复杂的状态控制很容易让人顾此失彼,手忙脚乱,最后的结果往往是,费劲九牛二虎之力把功能实现好了,但代码已经乱成一团糟,定位Bug难、扩展新功能难,甚至自己读起来也难。本课程的最大目的,就是帮初级开发者梳理逻辑,写出规范而有条理的代码,避免陷入以上尴尬境地。条理捋清楚了,你就会觉得一切似乎变得简单了,很多地方都会顺理成章。本课程没有什么高深的编程技巧,更没有炫酷的视觉效果,只是一步一步教你如何踏踏实实、稳稳当当的完成一款《简单消消乐》。因此,资深大牛你就别进了,想学高深知识的你就别点了,自认为消除小case、分分钟搞定的高手你也趁早走人。在这门课程里,你能够学到的,只有以下几点:1、如何使用UGUI搭建棋盘游戏的基础阵列;2、如何快速的实现通用的三消逻辑;3、如何使用Dotween插件实现物体的位移、缩放、旋转动画;4、如何熟练的使用协程方法完成延时操作逻辑;5、数组、集合、引用类型、Prefab等基础知识的巩固;6、如何写出规范而有条理的代码;7、益智小游戏的通用模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值