首页编程java编程java编程小游戏,java编译器

java编程小游戏,java编译器

编程之家2026-06-01634次浏览

其实java编程小游戏的问题并不复杂,但是又很多的朋友都不太了解java编译器,因此呢,今天小编就来为大家分享java编程小游戏的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

java编程小游戏,java编译器

java编程 设计如下图所示的窗口,完成猜数小游戏的设计。

界面不是完全一致,但是可行。

package ex1;

import java.util.Scanner;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

java编程小游戏,java编译器

class WindowButton extends JFrame implements ActionListener

{

private static final long serialVersionUID= 1L;

int number;

JTextField inputNumber;

JLabel feedBack;

java编程小游戏,java编译器

JButton buttonGetNumber,buttonEnter;

WindowButton(String s)

{

super(s);

buttonGetNumber= new JButton("得到一个新的随机数");

feedBack= new JLabel("无反馈信息",JLabel.CENTER);

feedBack.setBackground(Color.red);

inputNumber= new JTextField("0",5);

buttonEnter= new JButton("确定");

buttonEnter.addActionListener(WindowButton.this);

//code 1:按钮buttonEnter增加ActionEvent事件监视器,监视器为当前窗口

buttonGetNumber.addActionListener(WindowButton.this);

//code 2:按钮buttonGetNumber增加ActionEvent事件监视器,监视器为当前窗口

Box boxH1= Box.createHorizontalBox();

boxH1.add(new JLabel("获取1-100之间的随机数:"));

boxH1.add(buttonGetNumber);

Box boxH2= Box.createHorizontalBox();

boxH2.add(new JLabel("输入您的猜测:"));

boxH2.add(inputNumber);

Box boxH3= Box.createHorizontalBox();

boxH3.add(new JLabel("单击确定按钮:"));

boxH3.add(buttonEnter);

Box boxH4= Box.createHorizontalBox();

boxH4.add(new JLabel("反馈信息:"));

boxH4.add(feedBack);

Box baseBox= Box.createVerticalBox();

baseBox.add(boxH1);

baseBox.add(boxH2);

baseBox.add(boxH3);

baseBox.add(boxH4);

Container con= getContentPane();

con.setLayout(new FlowLayout());

con.add(baseBox);

con.validate();

setBounds(230,225,400,200);

setVisible(true);

validate();

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()== buttonGetNumber)//code 3:判断事件是否是buttonGetNumber

number=(int)(Math.random()*100)+1;

else if(e.getSource()== buttonEnter)//code 4:判断事件是否是buttonEnter

{

int guess= 0;

try{

guess= Integer.parseInt(inputNumber.getText());

//code 5:返回inputNumber中的文本

if(guess== number)

{

feedBack.setText("猜对了~");

//code 6:feedBack设置提示文本:"猜对了"

}

else if(guess> number)

{

feedBack.setText("猜大了~");

inputNumber.setText(null);

}

else if(guess< number)

{

feedBack.setText("猜小了~");

inputNumber.setText(null);

}

}

catch(NumberFormatException event)

{

feedBack.setText("请输入数字字符");

//code 7:feedBack设置提示文本:"请输入数字字符"

}

}

}

}

public class GuessNumberGame{

public static void main(String[] args){

new WindowButton("猜数子小游戏");

}

}

用JAVA编一个小游戏或者其他程序

贪吃蛇程序:

GreedSnake.java(也是程序入口):

import java.awt.BorderLayout;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Container;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.Iterator;

import java.util.LinkedList;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class GreedSnake implements KeyListener{

JFrame mainFrame;

Canvas paintCanvas;

JLabel labelScore;//计分牌

SnakeModel snakeModel= null;//蛇

public static final int canvasWidth= 200;

public static final int canvasHeight= 300;

public static final int nodeWidth= 10;

public static final int nodeHeight= 10;

//----------------------------------------------------------------------

// GreedSnake():初始化游戏界面

//----------------------------------------------------------------------

public GreedSnake(){

//设置界面元素

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(this);

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(this);

mainFrame.pack();

mainFrame.setResizable(false);

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainFrame.setVisible(true);

begin();

}

//----------------------------------------------------------------------

// keyPressed():按键检测

//----------------------------------------------------------------------

public void keyPressed(KeyEvent e){

int keyCode= e.getKeyCode();

if(snakeModel.running)

switch(keyCode){

case KeyEvent.VK_UP:

snakeModel.changeDirection(SnakeModel.UP);

break;

case KeyEvent.VK_DOWN:

snakeModel.changeDirection(SnakeModel.DOWN);

break;

case KeyEvent.VK_LEFT:

snakeModel.changeDirection(SnakeModel.LEFT);

break;

case KeyEvent.VK_RIGHT:

snakeModel.changeDirection(SnakeModel.RIGHT);

break;

case KeyEvent.VK_ADD:

case KeyEvent.VK_PAGE_UP:

snakeModel.speedUp();//加速

break;

case KeyEvent.VK_SUBTRACT:

case KeyEvent.VK_PAGE_DOWN:

snakeModel.speedDown();//减速

break;

case KeyEvent.VK_SPACE:

case KeyEvent.VK_P:

snakeModel.changePauseState();//暂停或继续

break;

default:

}

//重新开始

if(keyCode== KeyEvent.VK_R|| keyCode== KeyEvent.VK_S

|| keyCode== KeyEvent.VK_ENTER){

snakeModel.running= false;

begin();

}

}

//----------------------------------------------------------------------

// keyReleased():空函数

//----------------------------------------------------------------------

public void keyReleased(KeyEvent e){

}

//----------------------------------------------------------------------

// keyTyped():空函数

//----------------------------------------------------------------------

public void keyTyped(KeyEvent e){

}

//----------------------------------------------------------------------

// repaint():绘制游戏界面(包括蛇和食物)

//----------------------------------------------------------------------

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= snakeModel.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= snakeModel.food;

drawNode(g, n);

updateScore();

}

//----------------------------------------------------------------------

// drawNode():绘画某一结点(蛇身或食物)

//----------------------------------------------------------------------

private void drawNode(Graphics g, Node n){

g.fillRect(n.x* nodeWidth, n.y* nodeHeight, nodeWidth- 1,

nodeHeight- 1);

}

//----------------------------------------------------------------------

// updateScore():改变计分牌

//----------------------------------------------------------------------

public void updateScore(){

String s="Score:"+ snakeModel.score;

labelScore.setText(s);

}

//----------------------------------------------------------------------

// begin():游戏开始,放置贪吃蛇

//----------------------------------------------------------------------

void begin(){

if(snakeModel== null||!snakeModel.running){

snakeModel= new SnakeModel(this, canvasWidth/ nodeWidth,

this.canvasHeight/ nodeHeight);

(new Thread(snakeModel)).start();

}

}

//----------------------------------------------------------------------

// main():主函数

//----------------------------------------------------------------------

public static void main(String[] args){

GreedSnake gs= new GreedSnake();

}

}

Node.java:

public class Node{

int x;

int y;

Node(int x, int y){

this.x= x;

this.y= y;

}

}

SnakeModel.java:

import java.util.Arrays;

import java.util.LinkedList;

import java.util.Random;

import javax.swing.JOptionPane;

public class SnakeModel implements Runnable{

GreedSnake gs;

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和DOWN是偶数,RIGHT和LEFT是奇数

public static final int UP= 2;

public static final int DOWN= 4;

public static final int LEFT= 1;

public static final int RIGHT= 3;

//----------------------------------------------------------------------

// GreedModel():初始化界面

//----------------------------------------------------------------------

public SnakeModel(GreedSnake gs, int maxX, int maxY){

this.gs= gs;

this.maxX= maxX;

this.maxY= maxY;

matrix= new boolean[maxX][];

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

matrix[i]= new boolean[maxY];

Arrays.fill(matrix[i], false);//没有蛇和食物的地区置false

}

//初始化贪吃蛇

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

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

int x= maxX/ 2+ i;

int y= maxY/ 2;

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

matrix[x][y]= true;//蛇身处置true

}

food= createFood();

matrix[food.x][food.y]= true;//食物处置true

}

//----------------------------------------------------------------------

// changeDirection():改变运动方向

//----------------------------------------------------------------------

public void changeDirection(int newDirection){

if(direction% 2!= newDirection% 2)//避免冲突

{

direction= newDirection;

}

}

//----------------------------------------------------------------------

// moveOn():贪吃蛇运动函数

//----------------------------------------------------------------------

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;//越界(撞到墙壁)

}

//----------------------------------------------------------------------

// run():贪吃蛇运动线程

//----------------------------------------------------------------------

public void run(){

running= true;

while(running){

try{

Thread.sleep(timeInterval);

} catch(Exception e){

break;

}

if(!paused){

if(moveOn())//未结束

{

gs.repaint();

} else//游戏结束

{

JOptionPane.showMessageDialog(null,"GAME OVER",

"Game Over", JOptionPane.INFORMATION_MESSAGE);

break;

}

}

}

running= false;

}

//----------------------------------------------------------------------

// createFood():生成食物及放置地点

//----------------------------------------------------------------------

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);

}

//----------------------------------------------------------------------

// speedUp():加快蛇运动速度

//----------------------------------------------------------------------

public void speedUp(){

timeInterval*= speedChangeRate;

}

//----------------------------------------------------------------------

// speedDown():放慢蛇运动速度

//----------------------------------------------------------------------

public void speedDown(){

timeInterval/= speedChangeRate;

}

//----------------------------------------------------------------------

// changePauseState():改变游戏状态(暂停或继续)

//----------------------------------------------------------------------

public void changePauseState(){

paused=!paused;

}

}

java程序编写小游戏 要求:程序随机产生20—50根火柴

为什么用AWT不用 swing?

算法思想很简单

是取胜原理

用反推法:欲拿最后一根,必须留2根在那里,欲留2根,必须上一轮留2+3+1=6给对方,(它拿一,你拿三,它拿二,你拿二,它拿三,你拿一。都是留2根)。再向上一轮,就是6+4=10。

取胜原理:把随机产生的火柴数,分解成:2+4的n次方+m,(m≤3),当m=0的时候,后取者胜,当m=1、2、3的时候,先取者胜。先取者取完m,留2+4的n次方给对方,对方不管取多少,你取的数和对方相加等于4,一直到最后,留2根给对方,根据规则,对方只能取一根,留一根给你取胜。

另:取完者胜(含最后一根):最后留4根给对方,不管对方取多少,你都可以一次取完。上一轮同样加4。

取胜原理:把随机产生的火柴数,分解成:4的n次方+m,(m≤3),当m=0的时候,后取者胜,当m=1、2、3的时候,先取者胜。先取者取完m,留4的n次方给对方,对方不管取多少,你取的数和对方相加等于4,一直到最后,留4根给对方。

代码调试可用

自己用GUI搭个界面二十分钟的事

import java.util.Scanner;

public class MatchGame{

private static Scanner scanner= new Scanner(System.in);;

private int total;

private Computer com;

private static int exit= 1;

public MatchGame(int from, int to, String level){

if(from>= to){

throw new IllegalArgumentException();

}

total=(int)( Math.random()*(to- from))+ from;

com= new Computer(level);

}

public void start(){

System.out.println("0 means endGame, 4 means restartGame!");

System.out.println("The number of matches is"+ total);

System.out.println("~Start~");

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

while(true){

int u= scanner.nextInt();

if(u> 0&& u< 4){

System.out.println("You entered"+ u);

if(total- u<= 0){

exit= 2;

endGame();

}

total= total- u;

System.out.println("Total:"+ total);

int c= com.play(u, total);

System.out.println("Computer selected"+ c+" matches~");

if(total- c<= 0){

exit= 0;

endGame();

}

total= total- c;

System.out.println("Total:"+ total);

}else if(u== 0){

endGame();

}else if(u> 4|| u< 0){

System.out.println("You entered Wrong number~");

} else{

restart();

}

}

}

public static void restart(){

MatchGame game;

System.out

.println("Please select Computer Level: 1:HARD 2:NORMAL 3:EASY");

int level= scanner.nextInt();

if(level== 1){

game= new MatchGame(20, 50, Computer.HARD);

} else if(level== 2){

game= new MatchGame(20, 50, Computer.NORMAL);

} else{

game= new MatchGame(20, 50, Computer.EASY);

}

game.start();

}

public static void endGame(){

if(exit== 0){

System.out.println("YOU WIN!!!");

} else if(exit== 2){

System.out.println("YOU LOSE!!!");

}

System.exit(exit);

}

public static class Computer{

private static String EASY="EASY";

private static String NORMAL="NORMAL";

private static String HARD="HARD";

private static String LEVEL;

private int com;

public Computer(String level){

LEVEL= level;

}

public int play(int user, int total){

if(LEVEL.equals(EASY)){

com= 1;

} else if(LEVEL.equals(NORMAL)){

com=(int)(Math.random()* 2)+ 1;

} else{

int i;

if(total% 4== 0){

i= total/ 4- 1;

} else{

i= total/ 4;

}

com= total- 4* i- 1;

if(com== 0){

com= 4- user;

}

}

return com;

}

}

public static void main(String[] args){

MatchGame game;

System.out

.println("Please select Computer Level: 1:HARD 2:NORMAL 3:EASY");

int level= scanner.nextInt();

if(level== 1){

game= new MatchGame(20, 50, Computer.HARD);

} else if(level== 2){

game= new MatchGame(20, 50, Computer.NORMAL);

} else{

game= new MatchGame(20, 50, Computer.EASY);

}

game.start();

}

}

好了,关于java编程小游戏和java编译器的问题到这里结束啦,希望可以解决您的问题哈!

手机app开发平台(app软件制作平台)电脑编程培训学校?少儿编程培训