Я следовал этому уроку о том, как построить змею на андроид студии: https://www.youtube.com/watch?v=bPlG7ra83lo
Он использует круги, которые создают коробку 28 * 42, которая выглядит следующим образом:

Я надеялся заменить эти круги квадратами, но когда я попробую различные методы, такие как этот:
canvas.drawRect(x*tileSizeX,tileSizeY*x,tileSizeY*y, x, mPaint);
Я получаю вывод, подобный этому:

Ниже приведен код, используемый в классе SnakeView:
public class SnakeView extends View {
private Paint mPaint = new Paint();
private TileType snakeViewMap[][];
public SnakeView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public void setSnakeViewMap (TileType[][] map){
this.snakeViewMap = map;
}
@Override
protected void onDraw (Canvas canvas){
super.onDraw(canvas);
if (snakeViewMap != null) {
float tileSizeX = canvas.getWidth()/snakeViewMap.length;
float tileSizeY = canvas.getHeight() / snakeViewMap[0].length;
float circleSize = Math.min(tileSizeX, tileSizeY) /2;
for (int x=0; x < snakeViewMap.length; x++) {
for (int y = 0; y <snakeViewMap[x].length; y++) {
switch (snakeViewMap[x][y]) {
case Nothing:
mPaint.setColor(Color.BLACK);
break;
case Wall:
mPaint.setColor(Color.GREEN);
break;
case SnakeHead:
mPaint.setColor(Color.RED);
break;
case SnakeTail:
mPaint.setColor(Color.GREEN);
break;
case Apple:
mPaint.setColor(Color.RED);
break;
}
canvas.drawRect(x*tileSizeX,tileSizeY*x,tileSizeY*y, x, mPaint);
//canvas.drawCircle(x * tileSizeX + tileSizeX/2f + circleSize/2, y * tileSizeY + tileSizeY/2f + circleSize/2, circleSize, mPaint);
}
}
}
}
}