在写这篇日记的时候我还是一个小菜鸟,关于java的小菜鸟。自己连ssh都没怎么学,只是看了点皮毛而已。但是工作是残酷的。
         前段时间接到主程的一个任务,做的是一个游戏程序的开发,主要是有关装备这一块的。看了策划结的文档之后,准备下手。主要情况是这样的,大家玩过杀怪的游戏都知道,装备有的是要鉴定的,鉴定的时候要给予一定的属性,先是属性的条数。一次鉴定,给多少条属性,随机性的。还需要给什么属性,比如伤害、MP、HP什么的,下面就分析一下思路。
         给多少条属性,这个好解决,比如1条属性的机率是40%,2条属性的机率是25%,可以用Random随机产生一个100以内数,然后看看这个数在1到40之间就给1条属性,在41到65之间就给2条属性。
         然后是要给什么属性,这个比较麻烦一点,因为鉴定的属性是不能重复的,于是有了一个方案,比如产生十个数,放进数组里面,当然,每加进一条都要与之前加入的做个比较,看看有没有重复的,如果有,则不用,重新random一个数。看到这个逻辑,真得有点头疼
                   int[] arr = new int[10];
                   for(int i=0;i<10;i++){
                      Random random=new Random;
   int a = random.nextInt(10);
   arr[i]=a;
}
         写到这里似乎有点卡壳了,接着就蛋疼了,如果在里面加一个循环的话……
int[] arr = new int[10];
                   for(int i=0;i<10;i++){
                      Random random=new Random;
   int a = random.nextInt(10);
  for(int j=0;j<i;i++){
    if(a==arr[j]) break;  
}
   arr[i]=a;
}
         后来发现这样的代码几乎就是狗屎,没办法,谁叫我以前不努力呢,当然,对于这样的问题也不能抛给别人,只好去外面抽支烟,缓一缓。就是这一步,我折腾了好久的。
         后来偶尔想到了一点什么,比如高中的时候,大家应该有听老师说过,集合有个特性就是互异性(当然还有无序性), 这下来劲了。
         建立一个集合,然后把这些数装入集合里面,如果集合的大小(size())小于给定值,比如4的话,则继续random这样问题就解决了。看来有问题不可怕,关键还是要动脑子。一个小菜鸟的java之路。。。。。。