「能用java做的小游戏」用java可以做怎样的游戏

博主:adminadmin 2022-12-01 04:00:08 64

今天给各位分享能用java做的小游戏的知识,其中也会对用java可以做怎样的游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA能写游戏吗?

Java可以写游戏的,但是一般来说不建议用Java开发游戏,因为Java这个语言是面向对象的语言对代码进行了大量的封装来达到模块组件可复用的目的,这也导致了它相对于面向过程的C,C++这种更偏向于底层的语言来说运行速度是偏慢的,Java更偏向于做服务端方面的工作,做电商网站,公司企业级的后台系统,因为Java语言的特点使其开发的系统具有较高的稳定性和安全性以及最重要的可维护性。

求一个简单又有趣的JAVA小游戏代码

具体如下:

连连看的小源码

package Lianliankan;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class lianliankan implements ActionListener

{

JFrame mainFrame; //主面板

Container thisContainer;

JPanel centerPanel,southPanel,northPanel; //子面板

JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组

JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮

JLabel fractionLable=new JLabel("0"); //分数标签

JButton firstButton,secondButton; //

分别记录两次62616964757a686964616fe59b9ee7ad9431333335326239被选中的按钮

int grid[][] = new int[8][7];//储存游戏按钮位置

static boolean pressInformation=false; //判断是否有按钮被选中

int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标

int i,j,k,n;//消除方法控制

代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。

对于字符和Unicode数据的位模式的定义,此模式代表特定字母、数字或符号(例如 0x20 代表一个空格,而 0x74 代表字符“t”)。一些数据类型每个字符使用一个字节;每个字节可以具有 256 个不同的位模式中的一个模式。

在计算机中,字符由不同的位模式(ON 或 OFF)表示。每个字节有 8 位,这 8 位可以有 256 种不同的 ON 和 OFF 组合模式。对于使用 1 个字节存储每个字符的程序,通过给每个位模式指派字符可表示最多 256 个不同的字符。2 个字节有 16 位,这 16 位可以有 65,536 种唯一的 ON 和 OFF 组合模式。使用 2 个字节表示每个字符的程序可表示最多 65,536 个字符。

单字节代码页是字符定义,这些字符映射到每个字节可能有的 256 种位模式中的每一种。代码页定义大小写字符、数字、符号以及 !、@、#、% 等特殊字符的位模式。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页。

虽然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代码页中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代码页中却不同。如果在运行不同代码页的计算机间交换数据,必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失。

如果某个数据库为来自许多不同国家的客户端提供服务,则很难为该数据库选择这样一种代码页,使其包括所有客户端计算机所需的全部扩展字符。而且,在代码页间不停地转换需要花费大量的处理时间。

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

}

}

有一款修建金字塔的2D java游戏,一块砖从一层开始接力往上扔是什么?

根据描述,这款游戏应该是法老神迹,是当年JAVA上一款很热门的游戏。

java手机游戏在智能机出现之前可谓红极一时,只要是支持java程序的手机都可以安装,众多手机小游戏都由java开发。

由于java手机游戏的通用性太强,在智能机普及之前,是否支持java成为顾客选择手机的一个重要因素。java手机游戏开发一次便可适用绝大部分机型,直到今天手机网游还一直用java进行开发。

java是由由Sun 公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。java手机游戏属于javame,又称j2me或者kjava,它依靠自身强大的可拓展性和移植性,成为目前手机上最通用的一种游戏。

JAVA游戏缺点:

虽然游戏可移植性强,通用性强,但是当开发者面对众多机型,分辨率的时候,适配不同的手机成为大问题,而其对内存的消耗相比其他语言的手机游戏也更加难以控制,由于语言的限制,使得java游戏难以做出太动感的画面如3D效果等。随着安卓和iphone市场的兴起,java手机游戏在渐渐没落。

用JAVA编写一个小游戏

前天写的猜数字游戏,yong i控制猜测次数,有详细解析,用黑窗口可以直接运行,

我试验过了,没问题

import javax.swing.Icon;

import javax.swing.JOptionPane;

public class CaiShuZi4JOptionPane {

/**

* @param args

*/

public static void main(String[] args) {

Icon icon = null;

boolean bl = false;

int put = 0;

int c = (int) (((Math.random())*100)+1); //获取一个1-100的随机数

System.out.println("你获取的随机数是:"+c); //打印你的随机数字

String str1 = (String) JOptionPane.showInputDialog(null,"请输入你的猜测数字(1-100):\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入"); //第一次输入你的猜测数字

if(str1==null){

JOptionPane.showMessageDialog(null, "你已经取消了本次游戏"); //如果你点取消那么本次游戏结束

}else{

bl = num(str1); //判断是输入的是不是数字或者是整数

if(true==bl){ //如果是数字的话进入与随机数比较的程序

System.out.println("你输入的数字是:"+str1); //打印你输入的数字

put = Integer.valueOf(str1);

for(int i = 4;i 0;i--){ //i是你可以猜测的次数

if(put==c){

JOptionPane.showMessageDialog(null, "恭喜你猜对了,正确答案是:"+c+"。"); //如果你猜对了就直接结束循环

break;

}else if(putc){ //如果输大了就让你再次从新输入

str1 = (String) JOptionPane.showInputDialog(null,"你的输入过大。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");

if(str1==null){

JOptionPane.showMessageDialog(null, "你已经取消了本次输入");

break;

}else{

bl =num(str1);

if(true==bl){

put = Integer.valueOf(str1);

}else{

JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");

}

}

}else if(putc){ //如果你输小了也让你从新输入

str1 = (String) JOptionPane.showInputDialog(null,"你的输入过小。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");

if(str1==null){

JOptionPane.showMessageDialog(null, "你已经取消了本次输入");

break;

}else{

bl =num(str1);

if(true==bl){

put = Integer.valueOf(str1);

}else{

JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");

}

}

}

}

}else if(bl==false){ //这个 是你第一次如果填写的不是数字的话也会结束本次游戏

JOptionPane.showMessageDialog(null, "请您下次按要求填写。本次游戏结束");

}

if(true==bl c!=put){ //如果你i次都没猜对,那么就直接告诉你这个数十什么

JOptionPane.showMessageDialog(null, "很遗憾你没能猜对,这个数字是:"+c+".");

}

}

}

public static boolean num(String value){ //一个静态方法,判断你输入的是不是数字

try {

Integer.parseInt(value);

return true;

} catch (Exception e) {

return false;

}

}

}

能用java做的小游戏的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于用java可以做怎样的游戏、能用java做的小游戏的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。