贪吃蛇--集合的应用

package worm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/*蛇,包含节点*/

//<T>范型:用来约束集合中元素的类型,java 5 以后提供
public class Worm {
	private List<Node> body =
		new ArrayList<Node>();
										
	public static final int UP = -10;
	public static final int DOWN = 10;
	public static final int LEFT = -1;
	public static final int RIGHT = 1;
	
	/**当前方向*/
	private int dir = -1;
	
	public Worm() {
		// TODO Auto-generated constructor stub
	}
	
	//Arrays:数组工具类
	public Worm(Node[] nodes,int dir){
		List<Node> list = Arrays.asList(nodes);//把数组转换成list
		this.body.addAll(list);
		this.dir = dir;
	}
	
	
	/**
	 * 走一步
	 * */
	public void step(){
		Node head = body.get(0);
		int i = head.getI() + dir/10; 
		int j = head.getJ() + dir%10;
		Node newHead = new Node(i,j);
		body.add(0, newHead);
		if(eatSomething()){
			return;
		}
		body.remove(body.size()-1);
	}

	private boolean eatSomething() {
		return false;
	}

	/**
	 * 拐弯
	 * */
	public void step(int dir){
		if(this.dir + dir == 0){
			throw new IllegalArgumentException("方向错误!");
		}
		this.dir = dir;
		step();
	}
	public boolean contains(int i,int j){
		for(int idx=0;idx<body.size();idx++){
			Node n = body.get(idx);
			if(n.getI()==i && n.getJ()==j){
				return true;
			}
		}
		return false;
	}

}


---------------------------------------------------------------

package worm;

public class WormPane {
	private Worm worm;
	public WormPane() {}
	public WormPane(Worm worm) {
		this.worm = worm;
	}
	
	public void print(){
		for(int i=0;i<20;i++){
			for(int j=0;j<20;j++){
				if(i==0 || i==19){//上下边
					System.out.print("-");
				}else if(j==0 || j==19){//左右边
						System.out.print("|");
				}else if(worm.contains(i,j)){
						System.out.print("#");
				}else{
					System.out.print(" ");
				}

			}
			System.out.println();
		}
	}
}


---------------------------------------------------------------

package worm;

import java.util.Scanner;

public class WormDemo {
	public static void main(String[] args){
		Node[] nodes = {
			new Node(4,2),
			new Node(4,3),
			new Node(4,4),
			new Node(5,4),
			new Node(6,4),
			new Node(7,4),
		};
		Worm worm = new Worm(nodes,Worm.LEFT);
		WormPane pane = new WormPane(worm);
//		pane.print();
//		worm.step();
//		pane.print();
//		worm.step(Worm.UP);
//		pane.print();
		
		Scanner s = new Scanner(System.in);
		while(true){
			pane.print();
			String str = s.nextLine();
			if(str.trim().equals("")){
				worm.step();
			}else if(str.equalsIgnoreCase("W")){
				worm.step(Worm.UP);
			}else if(str.equalsIgnoreCase("s")){
				worm.step(Worm.DOWN);
			}else if(str.equalsIgnoreCase("a")){
				worm.step(Worm.LEFT);
			}else if(str.equalsIgnoreCase("d")){
				worm.step(Worm.RIGHT);
			}
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 贪吃蛇(pygame)资源包是一个供开发者使用的Python库,用于创建和定制贪吃蛇游戏。该资源包提供了许多有用的函数和类,使开发贪吃蛇游戏变得更加简单和高效。 首先,pygame资源包提供了贪吃蛇游戏所需的基本功能,如创建游戏窗口、处理用户输入和渲染游戏元素等。开发者可以使用pygame资源包中的函数轻松地实现这些功能,而无需从头开始编写与游戏逻辑无关的底层代码。 其次,pygame资源包还提供了一些有助于贪吃蛇游戏设计和美化的功能。例如,开发者可以使用pygame资源包中的精灵类创建具有不同外观和动画效果的游戏元素,如贪吃蛇头部、身体和食物等。开发者还可以使用pygame资源包中的图像和音频加载功能,为游戏添加更多的视觉和听觉效果。 此外,pygame资源包还支持碰撞检测、计分系统和游戏状态管理等高级功能。开发者可以使用pygame资源包提供的功能轻松处理贪吃蛇与食物、边界或自身碰撞的情况,并实现分数计算和游戏胜负的判断。 最后,pygame资源包还有一个庞大的开源社区,提供了大量的示例代码、教程和资源,供开发者学习和参考。开发者可以从社区中获取帮助和支持,加速贪吃蛇游戏的开发过程。 总而言之,贪吃蛇(pygame)资源包是一个强大而且易于使用的工具,可以帮助开发者快速、高效地创建和定制贪吃蛇游戏。无论是初学者还是有经验的开发者,都可以从pygame资源包中受益,并开发出独一无二的贪吃蛇游戏作品。 ### 回答2: 贪吃蛇Pygame资源包是一个专门为贪吃蛇游戏开发者设计的资源包。Pygame是一个基于Python的游戏开发库,它提供了丰富的功能和工具,使开发者能够轻松创建自己的游戏贪吃蛇Pygame资源包包含了一系列用于贪吃蛇游戏开发的资源,如图形、声音和其他游戏元素。这些资源可以帮助开发者更快地搭建游戏界面,增强用户的游戏体验。 对于游戏开发者来说,使用贪吃蛇Pygame资源包有以下几个优势: 1. 节省开发时间:资源包提供了贪吃蛇游戏所需的各种素材,开发者不再需要从头开始设计和绘制这些素材,大大缩短了开发周期。 2. 提高游戏质量:资源包中的素材经过精心设计和制作,游戏开发者可以直接使用这些专业的素材,提高游戏的质量和效果。 3. 简化代码编写:资源包提供了一些已经封装好的函数和类,开发者可以直接调用这些函数和类来实现贪吃蛇游戏的核心逻辑,简化了代码编写的过程。 4. 提供灵活性:贪吃蛇Pygame资源包可以根据开发者的需求进行定制和扩展,开发者可以根据自己的想法和创意进行修改和优化。 总而言之,贪吃蛇Pygame资源包是一个非常有价值的工具,它可以帮助开发者更快地开发出高质量的贪吃蛇游戏,并且提供了一些方便的功能和工具,使开发过程更加简单和高效。无论是初学者还是有经验的开发者都可以受益于这个资源包。 ### 回答3: 贪吃蛇pygame资源包是一种用于开发贪吃蛇游戏的资源集合。Pygame是一个基于Python的开源游戏开发库,它提供了丰富的游戏开发功能和工具,方便开发人员快速搭建游戏框架。 贪吃蛇pygame资源包包含了所有需要的图像、声音和其他素材,使开发者可以轻松创建和设计各种元素,如蛇身、食物、背景等。这些资源包通常具有不同的图像尺寸和风格,以满足开发者的不同需求。开发者可以通过加载这些资源,将其应用游戏中,提升贪吃蛇游戏的可视化效果。 此外,贪吃蛇pygame资源包还可能包含一些预设的游戏逻辑和功能代码,如蛇的移动、食物生成、碰撞检测等,这些代码可以作为开发者的参考,帮助他们更好地理解和实现贪吃蛇的核心机制。 通过使用贪吃蛇pygame资源包,开发者可以大大减少游戏开发的工作量,加快开发速度。同时,资源包的使用也使游戏的视觉效果更加丰富和精美,增强了游戏的吸引力。开发者可以根据自己的需求自由选择和组合资源,打造自己理想中的贪吃蛇游戏。 总之,贪吃蛇pygame资源包是一种提供贪吃蛇游戏开发所需素材和代码的资源集合,它可以帮助开发者简化开发过程,提升游戏质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值