贪吃蛇源码解析(面向对象)

本文解析了贪吃蛇游戏的源码,包括苹果类、蛇类和房间类的详细实现。苹果类负责生成和更新苹果位置,蛇类包含蛇的位置、移动方向及吃苹果的方法。房间类则包含蛇、苹果集合,以及游戏区域的更新和绘制。通过面向对象设计,实现了游戏的基本逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

苹果类:首先苹果有它自向的属性,就是在什么位置(x,y坐标),,还有就是被蛇吃掉后会自动生成一个新的苹果,

属性:x(横坐标),y(竖坐标)

方法:自动生成新的苹果(create),位置在房间内随机


package com.snake.view;


import java.util.Random;


import com.snake.activity.R;




public class Apple {
//苹果的位置
private int x,y;

private int appleColor=R.drawable.greenstar;

public static final int appleSize=24;

//苹果最大能放在哪个位置上生成
private int maxX,maxY;

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}


public int getY() {
return y;
}


public void setY(int y) {
this.y = y;
}

public int getAppleColor() {
return appleColor;
}



public void setAppleColor(int appleColor) {
this.appleColor = appleColor;
}


public void setMaxX(int mx,int my){
maxX=mx;
maxY=my;
}


//重新生成苹果
public void create(){
System.out.println("生成苹果-----------");
Random random=new Random();
int x=0;y=0;
while(x==0 || y==0){
x=random.nextInt(maxX-1);
y=random.nextInt(maxY-1);
}
this.setX(x);
this.setY(y);
}
}


蛇:蛇有位置属性,以及移动和吃苹果的方法,可以获取蛇身的长度来判断是否进入下一关



package com.snake.view;


import java.util.ArrayList;


import com.snake.activity.R;


public class Snake {

//初始化蛇身
public Snake(){
sections=new ArrayList<SnakeSection>();
sections.add(new SnakeSection(1,1,0));
sections.add(new SnakeSection(2,1,0));
sections.add(new SnakeSection(3,1,0));
sections.add(new SnakeSection(4,1,R.drawable.yellowstar));
}

public ArrayList<SnakeSection> sections;

//四个方向

public static final int up=1;
public static final int down=2;
public static final int left=3;
public static final int right=4;


//蛇运动的方向,默认先向右移动
private int moveDirection=right;


//获取蛇身长度
public int getSnakeLength() {
return sections.size();
}


public int getMoveDirection(){
return moveDirection;
}


public void setMoveDirection(int moveDirection) {
this.moveDirection = moveDirection;
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值