java吃豆人代码思路,吃豆人编程怎么做

求个简单点的Java程序 100行左右。 需要解释。

贪吃蛇游戏 望采纳

创新互联成立于2013年,是专业互联网技术服务公司,拥有项目成都网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元左云做网站,已为上家服务,为左云各地企业和个人服务,联系电话:18980820575

import java.awt.Button;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.Point;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.*;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

public class Snake extends JFrame implements KeyListener{

int Count=0;

Button[][] grid = new Button[20][20];

ArrayListPoint snake_list=new ArrayListPoint();

Point bean=new Point(-1,-1);//保存随机豆子【坐标】

int Direction = 1; //方向标志 1:上 2:下 3:左 4:右

//构造方法

public Snake()

{

//窗体初始化

this.setBounds(400,300,390,395);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GridLayout f=new GridLayout(20,20);

this.getContentPane().setBackground(Color.gray);

this.setLayout(f);

//初始化20*20个按钮

for(int i=0;i20;i++)

for(int j=0;j20;j++)

{

grid[i][j]=new Button();

this.add(grid[i][j]);

grid[i][j].setVisible(false);

grid[i][j].addKeyListener(this);

grid[i][j].setBackground(Color.blue);

}

//蛇体初始化

grid[10][10].setVisible(true);

grid[11][10].setVisible(true);

grid[12][10].setVisible(true);

grid[13][10].setVisible(true);

grid[14][10].setVisible(true);

//在动态数组中保存蛇体按钮坐标【行列】信息

snake_list.add(new Point(10,10));

snake_list.add(new Point(11,10));

snake_list.add(new Point(12,10));

snake_list.add(new Point(13,10));

snake_list.add(new Point(14,10));

this.rand_bean();

this.setTitle("总分:0");

this.setVisible(true);

}

//该方法随机一个豆子,且不在蛇体上,并使豆子可见

public void rand_bean(){

Random rd=new Random();

do{

bean.x=rd.nextInt(20);//行

bean.y=rd.nextInt(20);//列

}while(snake_list.contains(bean));

grid[bean.x][bean.y].setVisible(true);

grid[bean.x][bean.y].setBackground(Color.red);

}

//判断拟增蛇头是否与自身有碰撞

public boolean is_cross(Point p){

boolean Flag=false;

for(int i=0;isnake_list.size();i++){

if(p.equals(snake_list.get(i) )){

Flag=true;break;

}

}

return Flag;

}

//判断蛇即将前进位置是否有豆子,有返回true,无返回false

public boolean isHaveBean(){

boolean Flag=false;

int x=snake_list.get(0).x;

int y=snake_list.get(0).y;

Point p=null;

if(Direction==1)p=new Point(x-1,y);

if(Direction==2)p=new Point(x+1,y);

if(Direction==3)p=new Point(x,y-1);

if(Direction==4)p=new Point(x,y+1);

if(bean.equals(p))Flag=true;

return Flag;

}

//前进一格

public void snake_move(){

if(isHaveBean()==true){//////////////有豆子吃

Point p=new Point(bean.x,bean.y);//【很重要,保证吃掉的是豆子的复制对象】

snake_list.add(0,p); //吃豆子

grid[p.x][p.y].setBackground(Color.blue);

this.Count++;

this.setTitle("总分:"+Count);

this.rand_bean(); //再产生一个豆子

}else{///////////////////无豆子吃

//取原蛇头坐标

int x=snake_list.get(0).x;

int y=snake_list.get(0).y;

//根据蛇头坐标推算出拟新增蛇头坐标

Point p=null;

if(Direction==1)p=new Point(x-1,y);//计算出向上的新坐标

if(Direction==2)p=new Point(x+1,y);//计算出向下的新坐标

if(Direction==3)p=new Point(x,y-1);//计算出向左的新坐标

if(Direction==4)p=new Point(x,y+1);//计算出向右的新坐标

//若拟新增蛇头碰壁,或缠绕则游戏结束

if(p.x0||p.x19|| p.y0||p.y19||is_cross(p)==true){

JOptionPane.showMessageDialog(null, "游戏结束!");

System.exit(0);

}

//向蛇体增加新的蛇头坐标,并使新蛇头可见

snake_list.add(0,p);

grid[p.x][p.y].setVisible(true);

//删除原蛇尾坐标,使蛇尾不可见

int x1=snake_list.get(snake_list.size()-1).x;

int y1=snake_list.get(snake_list.size()-1).y;

grid[x1][y1].setVisible(false);

snake_list.remove(snake_list.size()-1);

}

}

@Override

public void keyPressed(KeyEvent e) {

if(e.getKeyCode()==KeyEvent.VK_UP Direction!=2) Direction=1;

if(e.getKeyCode()==KeyEvent.VK_DOWN Direction!=1) Direction=2;

if(e.getKeyCode()==KeyEvent.VK_LEFT Direction!=4) Direction=3;

if(e.getKeyCode()==KeyEvent.VK_RIGHT Direction!=3) Direction=4;

}

@Override

public void keyReleased(KeyEvent e) { }

@Override

public void keyTyped(KeyEvent e) { }

public static void main(String[] args) throws InterruptedException {

Snake win=new Snake();

while(true){

win.snake_move();

Thread.sleep(300);

}

}

}

Java集合框架2

根据你上面的提示和程序里的要求,修改了Database,新增了衣服的方法。每次计算的价格可以写成共通方法。希望其他人有好的建议也发上来。

import java.util.HashMap;

import java.util.Map;

public class Database {

private MapInteger, McBean data = new HashMapInteger, McBean();

public Database(){

McBean bean = new McBean();

bean.setNid(1);

bean.setSname("地瓜");

bean.setNprice(2.0);

bean.setSdescription("新鲜的地瓜");

data.put(1, bean);

bean = new McBean();

bean.setNid(2);

bean.setSname("土豆");

bean.setNprice(1.2);

bean.setSdescription("又好又大的土豆");

data.put(2, bean);

bean = new McBean();

bean.setNid(3);

bean.setSname("丝瓜");

bean.setNprice(1.5);

bean.setSdescription("本地丝瓜");

data.put(3, bean);

bean = new McBean();

bean.setNid(4);

bean.setSname("衣服");

bean.setNprice(30);

bean.setSdescription("衣服");

data.put(4, bean);

}

public McBean getMcBean(int nid){

return data.get(nid);

}

}

public class McBean {

private Integer nid; //商品编号

private String sname; //名称

private double nprice; //价格

private String sdescription; //描述

public Integer getNid() {

return nid;

}

public void setNid(Integer nid) {

this.nid = nid;

}

public String getSname() {

return sname;

}

public void setSname(String sname) {

this.sname = sname;

}

public double getNprice() {

return nprice;

}

public void setNprice(double nprice) {

this.nprice = nprice;

}

public String getSdescription() {

return sdescription;

}

public void setSdescription(String sdescription) {

this.sdescription = sdescription;

}

}

public class OrderItemBean {

private McBean mcbean; //商品

private int count; //商品数量

public McBean getMcbean() {

return mcbean;

}

public void setMcbean(McBean mcbean) {

this.mcbean = mcbean;

}

public int getCount() {

return count;

}

public void setCount(int count) {

this.count = count;

}

}

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

public class ShoppingCar {

private double totalPrice; //购物车所有商品总价格

private int totalCount; //购物车所有商品数量

private MapInteger,OrderItemBean itemMap; //商品编号与订单项的键值对

public ShoppingCar(){

//初始化购物车

itemMap = new HashMapInteger, OrderItemBean();

Database db = new Database();

McBean bean = new McBean();

OrderItemBean orderItem1 = new OrderItemBean();

OrderItemBean orderItem2 = new OrderItemBean();

OrderItemBean orderItem3 = new OrderItemBean();

bean = db.getMcBean(1);

orderItem1.setMcbean(bean);

orderItem1.setCount(2);

bean = db.getMcBean(2);

orderItem2.setMcbean(bean);

orderItem2.setCount(5);

bean = db.getMcBean(4);

orderItem3.setMcbean(bean);

orderItem3.setCount(3);

itemMap.put(1, orderItem1);

itemMap.put(2, orderItem2);

itemMap.put(4, orderItem3);

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void buy(int nid){

//如果该商品是第一次购买,商品的信息从数据库获取,数据库的模拟代

//码见附录。itemMap增加一对键值对。

//如果不是第一次购买,则通过商品编号找到对应的定单项,然后更新定

//单项的商品数量。

//不管是否第一次购买,都得更新购物车的总价格和总数量。

Database db = new Database();

McBean mcBean = new McBean();

OrderItemBean orderItem = new OrderItemBean();

if(itemMap.get(nid) == null) {

mcBean = db.getMcBean(nid);

orderItem.setMcbean(mcBean);

orderItem.setCount(1);

itemMap.put(nid, orderItem);

} else {

orderItem = itemMap.get(nid);

orderItem.setCount(orderItem.getCount() + 1);

}

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void delete(int nid){

//通过商品编号删除的对应的定单项,然后从更新购物车的总价格和总数量。

itemMap.remove(nid);

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void update(int nid, int count){

///通过商品编号找到对应的对应的定单项,修改商品数量。然后从更新购物车的总价格和总数量。

OrderItemBean orderItem = new OrderItemBean();

orderItem = itemMap.get(nid);

orderItem.setCount(count);

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void clear(){

//清空定单项,购物车的总价格和总数量清零。

itemMap.clear();

totalCount = 0;

totalPrice = 0;

}

public void show(){

//显示购物车的商品,格式如下:

//商品编号 商品名称 单价 购买数量 总价

//1 地瓜 2.0 2 4.0

//2 衣服 30 5 150

//…

//合计:总数量:5 总价格:20元

System.out.println("商品编号" + " " + "商品名称" + " " + "单价" + " " + "购买数量" + " " + "总价" );

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

int nid = entry1.getKey();

String name = entry1.getValue().getMcbean().getSname();

double price = entry1.getValue().getMcbean().getNprice();

int count = entry1.getValue().getCount();

double totalprice = price * count;

System.out.println(nid + " "+ name + " " + price + " " + count + " " + totalprice);

}

System.out.println("合计:总数量:" + totalCount + " 总价格:" + totalPrice+ "元");

}

public static void main(String[] args) {

ShoppingCar shoppingCar = new ShoppingCar();

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.buy(3);

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.update(4, 2);

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.delete(2);

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.clear();

shoppingCar.show();

}

}

运行结果:

商品编号 商品名称 单价 购买数量 总价

1 地瓜 2.0 2 4.0

2 土豆 1.2 5 6.0

4 衣服 30.0 3 90.0

合计:总数量:3 总价格:100.0元

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

商品编号 商品名称 单价 购买数量 总价

1 地瓜 2.0 2 4.0

2 土豆 1.2 5 6.0

3 丝瓜 1.5 1 1.5

4 衣服 30.0 3 90.0

合计:总数量:4 总价格:101.5元

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

商品编号 商品名称 单价 购买数量 总价

1 地瓜 2.0 2 4.0

2 土豆 1.2 5 6.0

3 丝瓜 1.5 1 1.5

4 衣服 30.0 2 60.0

合计:总数量:4 总价格:71.5元

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

商品编号 商品名称 单价 购买数量 总价

1 地瓜 2.0 2 4.0

3 丝瓜 1.5 1 1.5

4 衣服 30.0 2 60.0

合计:总数量:3 总价格:65.5元

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

商品编号 商品名称 单价 购买数量 总价

合计:总数量:0 总价格:0.0元

网上下载的JAVA代码怎么用

根据你的描述,eat应该是一个工作空间的文件夹(.metadata是工作空间的配置文件),而那个EAT就是吃豆子的项目,用Eclipse的话,设置工作空间到????\eat就可以了.

一种是在打开的时候询问工作空间路径,输入你的eat文件夹的绝对路径就可以.

另一种是在Eclipse中,选文件(File) - 切换工作空间(Switch Workspace) 然后输入eat文件夹的绝对路径.

常理来讲,这样就能看到源代码了,至于运行,你需要找到这些源代码中的main方法,你可以在左侧的"包资源管理器(Package)"中找到EAT项目,在上面点击鼠标右键,点击运行方式(Run As), 选择运行的方式,不知道你的程序是Applet, 还是Application, 试一下吧,应该就可以运行起来了.

JAVA 学习多长时间能做出像贪吃蛇这样的小程序

看你是自己学, 还是出去培训, 要是培训的话, 时间稍微长一点儿, 我说一下需要的知识吧, 时间根据各人对知识的接受能力而定:

首先需要的是Java基础

然后要弄明白面向对象的思想, 因为一个类也能做出来, 但是看着非常不好看, 而且不容易维护.

再就是学集合类, 贪食蛇用集合类来保存(比如链表)比较快, 操作起来也比较容易.

之后就是Java图形界面, AWT 和Swing 都可, 要会用JFrame的 paint方法, 不要用按钮组来模拟蛇的样子, 最好是用画笔画出来.

最后就是多线程了, 这个尤为重要, 因为贪食蛇需要两个线程来进行运行, 主要的难度就体现在多线程的控制上, 转向控制啊, 吃豆变长啊, 移动速度啊, 等等

大概就这些吧, ^_^, 祝你成功

java.awt.event.ActionListenerin javax.swing.AbstractButton cannot be applied to (GoodWindow)

C:\Mywindow.java:48: 无法将 javax.swing.AbstractButton 中的 addActionListener(java.awt.event.ActionListener) 应用于 (GoodWindow)

button.addActionListener(this);

^

1 错误

有哪些经典java游戏

俄罗斯方块(Tetris)是经典的益智游戏,几乎是世界上最有影响力的益智游戏之一,游戏本身也很简单,只要不断消减掉落的方块就可以了。这个游戏被模仿了很多个版本,我这里的是EA出的疯狂俄罗斯方块(Tetris

Mania)。

超级泡泡龙(Super Bubble

Bobble)是Taito公司开发的游戏,主角是两只绿色和蓝色的小恐龙,通过吐出泡泡来消减屏幕上的彩球,游戏本身简单易学、妙趣横生,女孩子玩起来会上瘾的。

超级马里奥(Super Mario

Bros)是任天堂公司开发的著名横版过关游戏,是电子游戏历史上销量最大的系列游戏之一,早在任天堂的红白机时代就名声在外了,这个游戏几乎移植到了所有的任天堂游戏机,也包括电脑和手机。

吃豆(Pac-Man)是Namco公司开发的一个经典游戏,玩家控制游戏的主人公黄色小精灵吃掉藏在迷宫内所有的豆子,并且不能被“幽灵”抓到。

贪吃蛇(Retro

Snaker)是诺基亚手机上的一个元老级游戏,这个游戏短小精悍,很具可玩性,特别适合在手机上玩。据称,已经有超过十亿人玩过这个游戏。

钻石情迷(Bejeweled)是一个很好玩的益智游戏,有点像“对对碰”,游戏规则很简单,移动相邻的两个钻石,使任一排产生有三个或以上的相同钻石,即消去,上面的钻石靠重力落下。

祖玛(Zuma)是一款休闲益智游戏,玩法很像QQ龙珠,将中间吐出来的珠子向着周围连环滚出的同色珠子射打,够三个就能炸裂消除,简单有趣。

炸弹人(Bomberman)是Hudson公司开发的一款基于迷宫的游戏,游戏主角炸弹人是一个机器人,基本操作是放置炸弹,以十字型的方式爆炸,来炸死敌人,也可以炸死自己,还有些增强威力与技能道具增加了游戏的可玩性。

波斯王子(Prince of

Persia)是上世纪九十年代的一个经典游戏,我以前在DOS上玩过的最早的游戏之一,可惜游戏续集一代不如一代,Gameloft将波斯王子一代进行了重新开发制作,命名为Prince

of Persia Classic,并支持手机,其在手机上的效果很不错。

模拟人生(The Sims)是Electronic

Arts开发的一款以模拟普通人生活为主题的游戏,玩家可以操控模拟人物进行日常生活、社区交流以及建造房屋。在一个模拟的世界中,仿造真实的情境,控制生理和精神的需求。手机版的模拟人生简化了原始电脑游戏的一些因素,使得其可以在手机上方便的操作。


文章标题:java吃豆人代码思路,吃豆人编程怎么做
分享网址:http://scyanting.com/article/heodgh.html