发布网友 发布时间:2022-04-23 22:21
共2个回答
热心网友 时间:2023-10-11 23:51
错误的地方:
一、4和5行,超出了byte类型的范围(-128~127);
二、全局整型变量x,y在声明时没有声明为static导致18,20,22行中用到变量x和y的地方都错了。不能在static块中引用非static成员。
三、check方法上可能看得出是返回一个boolean类型的变量,但是在程序中返回操作都放在了if语句块中,那么如果没有一个if语执行的话,就没有返回值了,所以应该加上一个默认的返回值。。。
四、28,29行错误,那两个变量都是final的,当然不能再改变其值了。。。。。。
五、32,35行的case处,用case时,必须返回一个常量,整型,或是枚举类型,修改方法有两个,(1)上面不是定义了这两个整型的值吗,直接case 0,case 1,(2)在上面的定义处,加上final.
不妥的地方:
一、定义角色横坐标,角色纵坐标变量时,最好放到方法里面,因为你的角色可能有多个实例,每个实例会有自己的坐标,而static不是属于某个实例的,而是属于整个整的。所有的角色只能共用一对坐标,感觉不妥啊。。。其他全局变量也一样,可以再细考虑一下。。
二、多加点注释,,别人可能不会看check方法里几个if是干什么的,费时间(各人观点)。
热心网友 时间:2023-10-11 23:52
#1 package Game; //不合适的地方 包名要小写
#2 public class sprite //不合适的地方 类名要首字母要大写
#3 {
#4 private static final byte SCREEN_WIDTH = 176; //屏幕的宽度 //不对,byte(-128~~+128)
#5 private static final byte SCREEN_HEIGHT = 208; //屏幕的高度 //不对,byte(-128~~+128)
#6 private static byte INDEX_PLAYER = 0; //玩家角色类型的标示
#7 private static byte INDEX_ENEMY = 1; //敌人角色类型的标示
#8 int x; //角色横坐标
#9 int y; //角色纵坐标
#10 int index; //角色类型索引
#11 /*
#12 * 计算角色坐标是否在一个矩形区域中的方法
#13 */
#14 public static boolean check(int rec_x,int rec_y,int rec_w,int rec_h)
#15 {
#16 if(rec_w<=0||rec_h<=0)
#17 return false;
#18 if(x<0||y<0) //不对,无法在static引用非static成员
#19 return false;
#20 if(x>SCREEN_WIDTH||y>SCREEN_HEIGHT) //不对,无法在static引用非static成员
#21 return false;
#22 if(x>=rec_x&&x<=rec_x+rec_w&&y>=rec_y&&y<=rec_y+rec_h) //不对,无法在static引用非static成员
#23 return true;
#24 }
#25 public sprite(int index)
#26 {
#27 SCREEN_WIDTH = 240; //不对,常量只能赋一次值
#28 SCREEN_HEIGHT = 320; //不对,常量只能赋一次值
#29 this.index = index;
#30 switch(index)
#31 {
#32 case INDEX_PLAYER: //不对,case要跟常量(final),具体类型加以为(byte ,short,int ,char),还可以跟枚举
#33 x = 10;
#34 break;
#35 case INDEX_ENEMY: //不对,case要跟常量(final),具体类型加以为(byte ,short,int ,char),还可以跟枚举
#36 x = -10;
#37 break;
#38 }
#39 }
#40 }