java吃食物增加步数(蚂蚁吃食物java)

本文目录一览:

第一天吃了一半多一个第二天吃了剩下的一半多一个,在java中怎么用代码表示出?

public class D {

public static void main(String[] args) {

int day = 2;

double sum = 37;

double sumEat = 0;

for (int i = 1; i = day; i++) {

sumEat = sum/2+1; //吃了一半多一个

sum = sum – sumEat; //还剩下这么多

System.out.println(“第” + i + “天”);

System.out.println(“吃了一半多一个:” + sumEat);

System.out.println(“还剩下这么:” + sum);

}

}

}

求一java拼图源程序

package love;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;

import javax.swing.*;

public class Games extends JFrame implements ActionListener {

private JButton buttons[][];// 存储按键的数组

private Container container;// 一个容器

private GridLayout layout;// 布局方式为GridLayout

private int count = 0, is[] = new int[8];// count的作用是计算按键移动的次数,is[]储存一个随机产生的1到8数字数组

public Games() {

super(“拼图游戏”);// 设置标题

layout = new GridLayout(3, 3);// 3行3列

container = getContentPane();// 该容器的布局方式,及其重要,否则产生空引用异常

container.setLayout(layout);// 将该布局方式作用于容器

buttons = new JButton[3][3];// 给按键数组分配储存空间

int locate1, locate2;// locate1用来指示当前产生的元素 locate2用来指示locate1之前的元素

for (locate1 = 0; locate1 8; locate1++) {// 该方法作用是产生1到8这8个数,随机分配给数组,即无序排列

int g = new Random().nextInt(8) + 1;// 随机产生一个空白按键,即不显示的那个

is[locate1] = g;

for (locate2 = locate1 – 1; 0 = locate2; locate2–) {

if (is[locate1] == is[locate2])

break;

}

if (locate2 != -1)

locate1–;

}

int temp = 0;

int r = new Random().nextInt(3);// 随机产生一个0到3的数,代表空白按键的行

int l = new Random().nextInt(3);// 随机产生一个0到3的数,代表空白按键的列

for (int i = 0; i 3; i++) {

for (int j = 0; j 3; j++) {

if (r == i l == j) {// 空白按键设置为9,不显示

buttons[i][j] = new JButton(“9”);

container.add(buttons[i][j]);

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

} else {

buttons[i][j] = new JButton(“” + is[temp++]);// 将数组数组的值作为显示的8个按键的名字

container.add(buttons[i][j]);

}

buttons[i][j].addActionListener(this);// 注册监听事件

}

}

setSize(300, 300);// 设置显示容器区域大小

setVisible(true);

}

public void actionPerformed(ActionEvent event) {// 事件处理,由于计算量小该处将所有按键单独分析

JButton b = (JButton) event.getSource();

if (b == buttons[0][0]) {

if (buttons[0][1].getText().equals(“9”)) {

buttons[0][1].setText(“” + buttons[0][0].getText());

buttons[0][1].setVisible(true);

buttons[0][0].setText(“9”);

buttons[0][0].setVisible(false);

count++;

} else if (buttons[1][0].getText().equals(“9”)) {

buttons[1][0].setText(“” + buttons[0][0].getText());

buttons[1][0].setVisible(true);

buttons[0][0].setText(“9”);

buttons[0][0].setVisible(false);

count++;

}

}

else if (b == buttons[0][1]) {

if (buttons[0][0].getText().equals(“9”)) {

buttons[0][0].setText(“” + buttons[0][1].getText());

buttons[0][0].setVisible(true);

buttons[0][1].setText(“9”);

buttons[0][1].setVisible(false);

count++;

} else if (buttons[0][2].getText().equals(“9”)) {

buttons[0][2].setText(“” + buttons[0][1].getText());

buttons[0][2].setVisible(true);

buttons[0][1].setText(“9”);

buttons[0][1].setVisible(false);

count++;

} else if (buttons[1][1].getText().equals(“9”)) {

buttons[1][1].setText(“” + buttons[0][1].getText());

buttons[1][1].setVisible(true);

buttons[0][1].setText(“9”);

buttons[0][1].setVisible(false);

count++;

}

} else if (b == buttons[0][2]) {

if (buttons[0][1].getText().equals(“9”)) {

buttons[0][1].setText(“” + buttons[0][2].getText());

buttons[0][1].setVisible(true);

buttons[0][2].setText(“9”);

buttons[0][2].setVisible(false);

count++;

} else if (buttons[1][2].getText().equals(“9”)) {

buttons[1][2].setText(“” + buttons[0][2].getText());

buttons[1][2].setVisible(true);

buttons[0][2].setText(“9”);

buttons[0][2].setVisible(false);

count++;

}

} else if (b == buttons[1][0]) {

if (buttons[0][0].getText().equals(“9”)) {

buttons[0][0].setText(“” + buttons[1][0].getText());

buttons[0][0].setVisible(true);

buttons[1][0].setText(“9”);

buttons[1][0].setVisible(false);

count++;

} else if (buttons[1][1].getText().equals(“9”)) {

buttons[1][1].setText(“” + buttons[1][0].getText());

buttons[1][1].setVisible(true);

buttons[1][0].setText(“9”);

buttons[1][0].setVisible(false);

count++;

} else if (buttons[2][0].getText().equals(“9”)) {

buttons[2][0].setText(“” + buttons[1][0].getText());

buttons[2][0].setVisible(true);

buttons[1][0].setText(“9”);

buttons[1][0].setVisible(false);

count++;

}

} else if (b == buttons[1][1]) {

if (buttons[0][1].getText().equals(“9”)) {

buttons[0][1].setText(“” + buttons[1][1].getText());

buttons[0][1].setVisible(true);

buttons[1][1].setText(“9”);

buttons[1][1].setVisible(false);

count++;

} else if (buttons[1][0].getText().equals(“9”)) {

buttons[1][0].setText(“” + buttons[1][1].getText());

buttons[1][0].setVisible(true);

buttons[1][1].setText(“9”);

buttons[1][1].setVisible(false);

count++;

} else if (buttons[1][2].getText().equals(“9”)) {

buttons[1][2].setText(“” + buttons[1][1].getText());

buttons[1][2].setVisible(true);

buttons[1][1].setText(“9”);

buttons[1][1].setVisible(false);

count++;

} else if (buttons[2][1].getText().equals(“9”)) {

buttons[2][1].setText(“” + buttons[1][1].getText());

buttons[2][1].setVisible(true);

buttons[1][1].setText(“9”);

buttons[1][1].setVisible(false);

count++;

}

} else if (b == buttons[1][2]) {

if (buttons[0][2].getText().equals(“9”)) {

buttons[0][2].setText(“” + buttons[1][2].getText());

buttons[0][2].setVisible(true);

buttons[1][2].setText(“9”);

buttons[1][2].setVisible(false);

count++;

} else if (buttons[2][2].getText().equals(“9”)) {

buttons[2][2].setText(“” + buttons[1][2].getText());

buttons[2][2].setVisible(true);

buttons[1][2].setText(“9”);

buttons[1][2].setVisible(false);

count++;

} else if (buttons[1][1].getText().equals(“9”)) {

buttons[1][1].setText(“” + buttons[1][2].getText());

buttons[1][1].setVisible(true);

buttons[1][2].setText(“9”);

buttons[1][2].setVisible(false);

count++;

}

} else if (b == buttons[2][0]) {

if (buttons[1][0].getText().equals(“9”)) {

buttons[1][0].setText(“” + buttons[2][0].getText());

buttons[1][0].setVisible(true);

buttons[2][0].setText(“9”);

buttons[2][0].setVisible(false);

count++;

} else if (buttons[2][1].getText().equals(“9”)) {

buttons[2][1].setText(“” + buttons[2][0].getText());

buttons[2][1].setVisible(true);

buttons[2][0].setText(“9”);

buttons[2][0].setVisible(false);

count++;

}

}

else if (b == buttons[2][1]) {

if (buttons[2][0].getText().equals(“9”)) {

buttons[2][0].setText(“” + buttons[2][1].getText());

buttons[2][0].setVisible(true);

buttons[2][1].setText(“9”);

buttons[2][1].setVisible(false);

count++;

} else if (buttons[2][2].getText().equals(“9”)) {

buttons[2][2].setText(“” + buttons[2][1].getText());

buttons[2][2].setVisible(true);

buttons[2][1].setText(“9”);

buttons[2][1].setVisible(false);

count++;

} else if (buttons[1][1].getText().equals(“9”)) {

buttons[1][1].setText(“” + buttons[2][1].getText());

buttons[1][1].setVisible(true);

buttons[2][1].setText(“9”);

buttons[2][1].setVisible(false);

count++;

}

} else if (b == buttons[2][2]) {

if (buttons[2][1].getText().equals(“9”)) {

buttons[2][1].setText(“” + buttons[2][2].getText());

buttons[2][1].setVisible(true);

buttons[2][2].setText(“9”);

buttons[2][2].setVisible(false);

count++;

} else if (buttons[1][2].getText().equals(“9”)) {

buttons[1][2].setText(“” + buttons[2][2].getText());

buttons[1][2].setVisible(true);

buttons[2][2].setText(“9”);

buttons[2][2].setVisible(false);

count++;

}

}

if (buttons[0][0].getText().equals(“1”)// 假如1到8已经排列完成,则执行该语句

buttons[0][1].getText().equals(“2”)

buttons[0][2].getText().equals(“3”)

buttons[1][0].getText().equals(“4”)

buttons[1][1].getText().equals(“5”)

buttons[1][2].getText().equals(“6”)

buttons[2][0].getText().equals(“7”)

buttons[2][1].getText().equals(“8”)) {

JOptionPane.showMessageDialog(null, “您一共花费了” + count + “步完成了游戏!”);// 弹出对话框,显示共移动步数

System.exit(0);// 退出程序

}

}

public static void main(String[] args) {

Games game = new Games();

game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

用JAVA编写一个food吃东西的程序,至少吃三种东西

public class EatFood {

public EatFood()

{

Person p = new Person();

p.eatFood(new Apple());

p.eatFood(new Chicken());

p.eatFood(new Beef());

}

public static void main(String[] args)

{

new EatFood();

}

public class Person

{

public void eatFood(Food f)

{

System.out.print(“Person is eating “);

f.gotEaten();

}

}

interface Food

{

public void gotEaten();

}

class Apple implements Food

{

@Override

public void gotEaten()

{

System.out.println(“Apple”);

}

}

class Chicken implements Food

{

@Override

public void gotEaten()

{

System.out.println(“Chicken”);

}

}

class Beef implements Food

{

@Override

public void gotEaten()

{

System.out.println(“Beef”);

}

}

}

用JAVA设计游戏:贪吃蛇游戏

用MVC方式实现的贪吃蛇游戏,共有4个类。运行GreedSnake运行即可。主要是观察者模式的使用,我已经添加了很多注释了。

1、

/*

* 程序名称:贪食蛇

* 原作者:BigF

* 修改者:algo

* 说明:我以前也用C写过这个程序,现在看到BigF用Java写的这个,发现虽然作者自称是Java的初学者,

* 但是明显编写程序的素养不错,程序结构写得很清晰,有些细微得地方也写得很简洁,一时兴起之

* 下,我认真解读了这个程序,发现数据和表现分开得很好,而我近日正在学习MVC设计模式,

* 因此尝试把程序得结构改了一下,用MVC模式来实现,对源程序得改动不多。

* 我同时也为程序增加了一些自己理解得注释,希望对大家阅读有帮助。

*/

package mvcTest;

/**

* @author WangYu

* @version 1.0

* Description:

* /pre

* Create on :Date :2005-6-13 Time:15:57:16

* LastModified:

* History:

*/

public class GreedSnake {

public static void main(String[] args) {

SnakeModel model = new SnakeModel(20,30);

SnakeControl control = new SnakeControl(model);

SnakeView view = new SnakeView(model,control);

//添加一个观察者,让view成为model的观察者

model.addObserver(view);

(new Thread(model)).start();

}

}

————————————————————-

2、

package mvcTest;

//SnakeControl.java

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

/**

* MVC中的Controler,负责接收用户的操作,并把用户操作通知Model

*/

public class SnakeControl implements KeyListener{

SnakeModel model;

public SnakeControl(SnakeModel model){

this.model = model;

}

public void keyPressed(KeyEvent e) {

int keyCode = e.getKeyCode();

if (model.running){ // 运行状态下,处理的按键

switch (keyCode) {

case KeyEvent.VK_UP:

model.changeDirection(SnakeModel.UP);

break;

case KeyEvent.VK_DOWN:

model.changeDirection(SnakeModel.DOWN);

break;

case KeyEvent.VK_LEFT:

model.changeDirection(SnakeModel.LEFT);

break;

case KeyEvent.VK_RIGHT:

model.changeDirection(SnakeModel.RIGHT);

break;

case KeyEvent.VK_ADD:

case KeyEvent.VK_PAGE_UP:

model.speedUp();

break;

case KeyEvent.VK_SUBTRACT:

case KeyEvent.VK_PAGE_DOWN:

model.speedDown();

break;

case KeyEvent.VK_SPACE:

case KeyEvent.VK_P:

model.changePauseState();

break;

default:

}

}

// 任何情况下处理的按键,按键导致重新启动游戏

if (keyCode == KeyEvent.VK_R ||

keyCode == KeyEvent.VK_S ||

keyCode == KeyEvent.VK_ENTER) {

model.reset();

}

}

public void keyReleased(KeyEvent e) {

}

public void keyTyped(KeyEvent e) {

}

}

————————————————————-

3、

/*

*

*/

package mvcTest;

/**

* 游戏的Model类,负责所有游戏相关数据及运行

* @author WangYu

* @version 1.0

* Description:

* /pre

* Create on :Date :2005-6-13 Time:15:58:33

* LastModified:

* History:

*/

//SnakeModel.java

import javax.swing.*;

import java.util.Arrays;

import java.util.LinkedList;

import java.util.Observable;

import java.util.Random;

/**

* 游戏的Model类,负责所有游戏相关数据及运行

*/

class SnakeModel extends Observable implements Runnable {

boolean[][] matrix; // 指示位置上有没蛇体或食物

LinkedList nodeArray = new LinkedList(); // 蛇体

Node food;

int maxX;

int maxY;

int direction = 2; // 蛇运行的方向

boolean running = false; // 运行状态

int timeInterval = 200; // 时间间隔,毫秒

double speedChangeRate = 0.75; // 每次得速度变化率

boolean paused = false; // 暂停标志

int score = 0; // 得分

int countMove = 0; // 吃到食物前移动的次数

// UP and DOWN should be even

// RIGHT and LEFT should be odd

public static final int UP = 2;

public static final int DOWN = 4;

public static final int LEFT = 1;

public static final int RIGHT = 3;

public SnakeModel( int maxX, int maxY) {

this.maxX = maxX;

this.maxY = maxY;

reset();

}

public void reset(){

direction = SnakeModel.UP; // 蛇运行的方向

timeInterval = 200; // 时间间隔,毫秒

paused = false; // 暂停标志

score = 0; // 得分

countMove = 0; // 吃到食物前移动的次数

// initial matirx, 全部清0

matrix = new boolean[maxX][];

for (int i = 0; i maxX; ++i) {

matrix[i] = new boolean[maxY];

Arrays.fill(matrix[i], false);

}

// initial the snake

// 初始化蛇体,如果横向位置超过20个,长度为10,否则为横向位置的一半

int initArrayLength = maxX 20 ? 10 : maxX / 2;

nodeArray.clear();

for (int i = 0; i initArrayLength; ++i) {

int x = maxX / 2 + i;//maxX被初始化为20

int y = maxY / 2; //maxY被初始化为30

//nodeArray[x,y]: [10,15]-[11,15]-[12,15]~~[20,15]

//默认的运行方向向上,所以游戏一开始nodeArray就变为:

// [10,14]-[10,15]-[11,15]-[12,15]~~[19,15]

nodeArray.addLast(new Node(x, y));

matrix[x][y] = true;

}

// 创建食物

food = createFood();

matrix[food.x][food.y] = true;

}

public void changeDirection(int newDirection) {

// 改变的方向不能与原来方向同向或反向

if (direction % 2 != newDirection % 2) {

direction = newDirection;

}

}

/**

* 运行一次

* @return

*/

public boolean moveOn() {

Node n = (Node) nodeArray.getFirst();

int x = n.x;

int y = n.y;

// 根据方向增减坐标值

switch (direction) {

case UP:

y–;

break;

case DOWN:

y++;

break;

case LEFT:

x–;

break;

case RIGHT:

x++;

break;

}

// 如果新坐标落在有效范围内,则进行处理

if ((0 = x x maxX) (0 = y y maxY)) {

if (matrix[x][y]) { // 如果新坐标的点上有东西(蛇体或者食物)

if (x == food.x y == food.y) { // 吃到食物,成功

nodeArray.addFirst(food); // 从蛇头赠长

// 分数规则,与移动改变方向的次数和速度两个元素有关

int scoreGet = (10000 – 200 * countMove) / timeInterval;

score += scoreGet 0 ? scoreGet : 10;

countMove = 0;

food = createFood(); // 创建新的食物

matrix[food.x][food.y] = true; // 设置食物所在位置

return true;

} else // 吃到蛇体自身,失败

return false;

} else { // 如果新坐标的点上没有东西(蛇体),移动蛇体

nodeArray.addFirst(new Node(x, y));

matrix[x][y] = true;

n = (Node) nodeArray.removeLast();

matrix[n.x][n.y] = false;

countMove++;

return true;

}

}

return false; // 触到边线,失败

}

public void run() {

running = true;

while (running) {

try {

Thread.sleep(timeInterval);

} catch (Exception e) {

break;

}

if (!paused) {

if (moveOn()) {

setChanged(); // Model通知View数据已经更新

notifyObservers();

} else {

JOptionPane.showMessageDialog(null,

“you failed”,

“Game Over”,

JOptionPane.INFORMATION_MESSAGE);

break;

}

}

}

running = false;

}

private Node createFood() {

int x = 0;

int y = 0;

// 随机获取一个有效区域内的与蛇体和食物不重叠的位置

do {

Random r = new Random();

x = r.nextInt(maxX);

y = r.nextInt(maxY);

} while (matrix[x][y]);

return new Node(x, y);

}

public void speedUp() {

timeInterval *= speedChangeRate;

}

public void speedDown() {

timeInterval /= speedChangeRate;

}

public void changePauseState() {

paused = !paused;

}

public String toString() {

String result = “”;

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

Node n = (Node) nodeArray.get(i);

result += “[” + n.x + “,” + n.y + “]”;

}

return result;

}

}

class Node {

int x;

int y;

Node(int x, int y) {

this.x = x;

this.y = y;

}

}

————————————————————

4、

package mvcTest;

//SnakeView.java

import javax.swing.*;

import java.awt.*;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.Observable;

import java.util.Observer;

/**

* MVC模式中得Viewer,只负责对数据的显示,而不用理会游戏的控制逻辑

*/

public class SnakeView implements Observer {

SnakeControl control = null;

SnakeModel model = null;

JFrame mainFrame;

Canvas paintCanvas;

JLabel labelScore;

public static final int canvasWidth = 200;

public static final int canvasHeight = 300;

public static final int nodeWidth = 10;

public static final int nodeHeight = 10;

public SnakeView(SnakeModel model, SnakeControl control) {

this.model = model;

this.control = control;

mainFrame = new JFrame(“GreedSnake”);

Container cp = mainFrame.getContentPane();

// 创建顶部的分数显示

labelScore = new JLabel(“Score:”);

cp.add(labelScore, BorderLayout.NORTH);

// 创建中间的游戏显示区域

paintCanvas = new Canvas();

paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1);

paintCanvas.addKeyListener(control);

cp.add(paintCanvas, BorderLayout.CENTER);

// 创建底下的帮助栏

JPanel panelButtom = new JPanel();

panelButtom.setLayout(new BorderLayout());

JLabel labelHelp;

labelHelp = new JLabel(“PageUp, PageDown for speed;”, JLabel.CENTER);

panelButtom.add(labelHelp, BorderLayout.NORTH);

labelHelp = new JLabel(“ENTER or R or S for start;”, JLabel.CENTER);

panelButtom.add(labelHelp, BorderLayout.CENTER);

labelHelp = new JLabel(“SPACE or P for pause”, JLabel.CENTER);

panelButtom.add(labelHelp, BorderLayout.SOUTH);

cp.add(panelButtom, BorderLayout.SOUTH);

mainFrame.addKeyListener(control);

mainFrame.pack();

mainFrame.setResizable(false);

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainFrame.setVisible(true);

}

void repaint() {

Graphics g = paintCanvas.getGraphics();

//draw background

g.setColor(Color.WHITE);

g.fillRect(0, 0, canvasWidth, canvasHeight);

// draw the snake

g.setColor(Color.BLACK);

LinkedList na = model.nodeArray;

Iterator it = na.iterator();

while (it.hasNext()) {

Node n = (Node) it.next();

drawNode(g, n);

}

// draw the food

g.setColor(Color.RED);

Node n = model.food;

drawNode(g, n);

updateScore();

}

private void drawNode(Graphics g, Node n) {

g.fillRect(n.x * nodeWidth,

n.y * nodeHeight,

nodeWidth – 1,

nodeHeight – 1);

}

public void updateScore() {

String s = “Score: ” + model.score;

labelScore.setText(s);

}

public void update(Observable o, Object arg) {

repaint();

}

}

————————————————————-

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/127385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简单一点简单一点
上一篇 2024-10-03 23:15
下一篇 2024-10-03 23:15

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论