「java编写游戏教程」java游戏编程开发教程

博主:adminadmin 2022-11-30 15:58:08 49

本篇文章给大家谈谈java编写游戏教程,以及java游戏编程开发教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎样用JAVA做小游戏?

只要你会一点c语言的基础就行,在了解一点java的面向对象的思想,其实挺简单的,我学了一个星期就能看懂小游戏的源代码了,而且能做出来。其实就是一个applet小程序。

基本程序:安装一个jdk1.4就行,设好环境变量,就行了。这个软件特别小,就几兆。

我建议你买一本书来看就更快了,书名为“java2使用教程(第二版)”,清华大学出版社,这本书很基础,有很多的好例子,一看就懂了。我就是学者本书的。

有没有人给推荐一本用java编写2D3D游戏的书

java awt/swing编写游戏的参考书籍:

《Java 2D游戏编程入门》

《Java游戏编程原理与实践教程》

javaFX编写游戏的参考书籍

《JavaFx游戏程式设计(第三版)》

游戏界面并不是java的强项, java主要是给游戏写服务器什么的.

如果想自己写游戏,那么推荐unity3d. 因为untiy3d支持C#开发,而C#和java语法比较相似,上手容易.

比如下面一个求水仙花数的C#代码,你会java那么你能秒懂

using System;

namespace shuixianhua

{

    class Program

    {

        

        static void Main(string[] args)

        {

            //(3位数)水仙花数是指100`999之间.这个数的个位的立方.十位的立方,百位的立方 相加等于这个数字

            for (int i = 100;i1000;i++) {

                int b = i /100;

                int s = i  % 100/10;

                int g = i % 10;

                if (b * b * b + s * s * s + g * g * g == i) {

                    Console.WriteLine(i);

                }

            }

            Console.ReadKey();

        }

    }

}

用java如何编写一个猜拳游戏?

我之前写了个猜拳游戏的源代码,不过没你想的这么精彩。你才给5分就给你你自己修改了,应该很简单的。要多给点分我可以帮你修改。\x0d\x0aimport java.util.Scanner;\x0d\x0aimport java.util.Random;\x0d\x0apublic class caiquan\x0d\x0a{\x0d\x0afinal int jiandao=0;\x0d\x0afinal int shitou=1;\x0d\x0afinal int bu=2;\x0d\x0a\x0d\x0apublic static void main(String[] args)\x0d\x0a{\x0d\x0aString yn="y";\x0d\x0awhile (yn.equals("y"))\x0d\x0a {\x0d\x0a Scanner scanner = new Scanner(System.in);\x0d\x0a System.out.println("欢迎玩猜拳游戏。请输入0,1,2:0表示剪刀,1表示石头,2表示布");\x0d\x0a int a = scanner.nextInt();\x0d\x0a\x0d\x0a Random rd = new Random();\x0d\x0a int b = rd.nextInt(3); \x0d\x0a\x0d\x0a switch (b)\x0d\x0a {\x0d\x0a case 0:\x0d\x0a {\x0d\x0a System.out.println("系统出的是剪刀");\x0d\x0a switch(a)\x0d\x0a {\x0d\x0a case 0:System.out.println("平");break;\x0d\x0a case 1:System.out.println("赢");break;\x0d\x0a case 2:System.out.println("输");break;\x0d\x0a }\x0d\x0a }\x0d\x0a break;\x0d\x0a case 1:\x0d\x0a {\x0d\x0a System.out.println("系统出的是石头");\x0d\x0a switch(a)\x0d\x0a {\x0d\x0a case 0:System.out.println("输");break;\x0d\x0a case 1:System.out.println("平");break;\x0d\x0a case 2:System.out.println("赢");break;\x0d\x0a }\x0d\x0a }\x0d\x0a break;\x0d\x0a case 2:\x0d\x0a {\x0d\x0a System.out.println("系统出的是布");\x0d\x0a switch(a)\x0d\x0a {\x0d\x0a case 0:System.out.println("赢");break;\x0d\x0a case 1:System.out.println("输");break;\x0d\x0a case 2:System.out.println("平");break;\x0d\x0a }\x0d\x0a }\x0d\x0a }\x0d\x0a Scanner ynn = new Scanner(System.in);\x0d\x0a System.out.println("是否继续?是请输入y,否则输入n。");\x0d\x0a yn=ynn.next();\x0d\x0a }\x0d\x0a}\x0d\x0a}

用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做一些小游戏需要学什么

Java做这些小游戏, 可以使用下面几种Java自带的图形界面框架

Awt 适合内存较小, 配置较低的嵌入式系统等,组件较少, 性能好,资源消耗低.

Swing 适合PC等, 组件较丰富, 内存占用较大, 但是跨平台性优越

JavaFX 这个是比较强大的框架了,组件比Swing更丰富,比如添加了 日期选择组件, WebView组件, 还支持3D和 动画. 并且多多媒体支持良好. 但是相关资料比Swing等少

既然学过Java Web 那么对网页编程还是有了解吧,  HTML+CSS+JS 也可以开发出小游戏,浏览器可以显示,  放入JavaFX的WebView组件也可以显示出来

推荐使用JavaFX 或者 Web ,因为这两者都很好做到了分离. JavaFX也可以分离出FXML文件,CSS文件,Java文件. 当然也可以采用最稳妥的Swing来开发,毕竟Swing的图书教程很多.

推荐书籍

Java 2D游戏编程入门  Java游戏编程原理与实践教程

JavaFX 游戏程式设计 第三版

其实游戏算法都一样, 在Swing上好了弄透彻了, 也可以轻松移植到JavaFX或者网页上

关于java编写游戏教程和java游戏编程开发教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

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