「java游戏代码记忆游戏」java语言小游戏代码

博主:adminadmin 2022-12-28 12:24:08 62

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

本文目录一览:

如何将java游戏代码变成游戏

打包成.jar文件

java中将.class文件打包成为.jar文件

先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar –help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:

用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...

选项:

-c 创建新的存档

-t 列出存档内容的列表

-x 展开存档中的命名的(或所有的〕文件

-u 更新已存在的存档

-v 生成详细输出到标准输出上

-f 指定存档文件名

-m 包含来自标明文件的标明信息

-0 只存储方式;未用ZIP压缩格式

-M 不产生所有项的清单(manifest〕文件

-i 为指定的jar文件产生索引信息

-C 改变到指定的目录,并且包含下列文件:

如果一个文件名是一个目录,它将被递归处理。

清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。

示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:

jar cvf classes.jar Test1.class Test2.class

示例2:用一个存在的清单(manifest)文件 'manifest' 将D盘winder/ 目录下的所有

文件存档到一个名为 'classes.jar' 的存档文件中:

jar cvfm classes.jar manifest.mf -D winder/

在打包时注意manifest.mf文件中的内容,可以通过它来设置classpath,mainclass。

Manifest-Version: 1.0

Created-By: 1.4.2 (Sun Microsystems Inc.)

Class-Path: lib/classes12.jar

Main-Class: winder.snower.Start

特别要注意的是manifest.mf文件的最后要有两行空白,一般我的做法是先生成一个不用的manifest.mf文件,再在其上改动,这样就避免了两行空白带来的麻烦了。

参考

Java数独游戏代码

public class ShuDu {

/**存储数字的数组*/

static int[][] n = new int[9][9];

/**生成随机数字的源数组,随机数字从该数组中产生*/

static int[] num = {1,2,3,4,5,6,7,8,9};

public static void main(String[] args) {

//生成数字

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

//尝试填充的数字次数

int time = 0;

//填充数字

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

//产生数字

n[i][j] = generateNum(time);

//如果返回值为0,则代表卡住,退回处理

//退回处理的原则是:如果不是第一列,则先倒退到前一列,否则倒退到前一行的最后一列

if(n[i][j] == 0){

//不是第一列,则倒退一列

if(j 0){

j-=2;

continue;

}else{//是第一列,则倒退到上一行的最后一列

i--;

j = 8;

continue;

}

}

//填充成功

if(isCorret(i,j)){

//初始化time,为下一次填充做准备

time = 0;

}else{ //继续填充

//次数增加1

time++;

//继续填充当前格

j--;

}

}

}

//输出结果

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

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

System.out.print(n[i][j] + " ");

}

System.out.println();

}

}

/**

* 是否满足行、列和3X3区域不重复的要求

* @param row 行号

* @param col 列号

* @return true代表符合要求

*/

public static boolean isCorret(int row,int col){

return (checkRow(row) checkLine(col) checkNine(row,col));

}

/**

* 检查行是否符合要求

* @param row 检查的行号

* @return true代表符合要求

*/

public static boolean checkRow(int row){

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

if(n[row][j] == 0){

continue;

}

for(int k =j + 1;k 9;k++){

if(n[row][j] == n[row][k]){

return false;

}

}

}

return true;

}

/**

* 检查列是否符合要求

* @param col 检查的列号

* @return true代表符合要求

*/

public static boolean checkLine(int col){

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

if(n[j][col] == 0){

continue;

}

for(int k =j + 1;k 9;k++){

if(n[j][col] == n[k][col]){

return false;

}

}

}

return true;

}

/**

* 检查3X3区域是否符合要求

* @param row 检查的行号

* @param col 检查的列号

* @return true代表符合要求

*/

public static boolean checkNine(int row,int col){

//获得左上角的坐标

int j = row / 3 * 3;

int k = col /3 * 3;

//循环比较

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

if(n[j + i/3][k + i % 3] == 0){

continue;

}

for(int m = i+ 1;m 9;m++){

if(n[j + i/3][k + i % 3] == n[j + m/3][k + m % 3]){

return false;

}

}

}

return true;

}

/**

* 产生1-9之间的随机数字

* 规则:生成的随机数字放置在数组8-time下标的位置,随着time的增加,已经尝试过的数字将不会在取到

* 说明:即第一次次是从所有数字中随机,第二次时从前八个数字中随机,依次类推,

* 这样既保证随机,也不会再重复取已经不符合要求的数字,提高程序的效率

* 这个规则是本算法的核心

* @param time 填充的次数,0代表第一次填充

* @return

*/

public static int generateNum(int time){

//第一次尝试时,初始化随机数字源数组

if(time == 0){

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

num[i] = i + 1;

}

}

//第10次填充,表明该位置已经卡住,则返回0,由主程序处理退回

if(time == 9){

return 0;

}

//不是第一次填充

//生成随机数字,该数字是数组的下标,取数组num中该下标对应的数字为随机数字

int ranNum = (int)(Math.random() * (9 - time));

//把数字放置在数组倒数第time个位置,

int temp = num[8 - time];

num[8 - time] = num[ranNum];

num[ranNum] = temp;

//返回数字

return num[8 - time];

}

}

用java编写一个猜数字游戏,

package day06;

import java.util.Scanner;

//猜字符游戏

public class GuessingGame {

//主方法

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

int count = 0; //猜错的次数

char[] chs = generate(); //随机生成的字符数组

System.out.println(chs); //作弊

while(true){ //自造死循环

System.out.println("猜吧!");

String str = scan.next().toUpperCase(); //获取用户输入的字符串

if(str.equals("EXIT")){ //判断str是否是EXIT

System.out.println("下次再来吧!");

break;

}

char[] input = str.toCharArray(); //将字符串转换为字符数组

int[] result = check(chs,input);  //对比

if(result[0]==chs.length){ //位置对为5

int score = chs.length*100 - count*10; //一个字符100分,错一次减10分

System.out.println("恭喜你猜对了,得分:" + score);

break; //猜对时跳出循环

}else{ //没猜对

count++; //猜错次数增1

System.out.println("字符对:"+result[1]+"个,位置对:"+result[0]+"个");

}

}

}

//随机生成5个字符数组

public static char[] generate(){

char[] chs = new char[5];

char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',

'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',

'W', 'X', 'Y', 'Z'};

boolean[] flags = new boolean[letters.length]; //1.

for(int i=0;ichs.length;i++){

int index;

do{

index = (int)(Math.random()*letters.length); //0到25

}while(flags[index]==true); //2.

chs[i] = letters[index];

flags[index] = true; //3.

}

return chs;

}

//对比随机数组与用户输入的数组

public static int[] check(char[] chs,char[] input){

int[] result = new int[2];

for(int i=0;ichs.length;i++){

for(int j=0;jinput.length;j++){

if(chs[i]==input[j]){ //字符对

result[1]++; //字符对个数增1

if(i==j){ //位置对

result[0]++; //位置对个数增1

}

break;

}

}

}

return result;

}

}

跪求java小项目,经典小游戏代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

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;

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

}

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

}

}

public void keyReleased(KeyEvent e){

}

public void keyTyped(KeyEvent e){

}

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

}

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: " + snakeModel.score;

labelScore.setText(s);

}

void begin(){

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

snakeModel = new SnakeModel(this,

canvasWidth/nodeWidth,

canvasHeight/nodeHeight);

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

}

}

public static void main(String[] args){

GreedSnake gs = new GreedSnake();

}

}

///////////////////////////////////////////////////

// 文件2

///////////////////////////////////////////////////

import java.util.*;

import javax.swing.*;

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 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(GreedSnake gs, int maxX, int maxY){

this.gs = gs;

this.maxX = maxX;

this.maxY = maxY;

// initial matirx

matrix = new boolean[maxX][];

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

matrix = new boolean[maxY];

Arrays.fill(matrix,false);

}

// initial the snake

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;

}

food = createFood();

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

}

public void changeDirection(int newDirection){

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

direction = newDirection;

}

}

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;

}

}

java游戏代码记忆游戏的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java语言小游戏代码、java游戏代码记忆游戏的信息别忘了在本站进行查找喔。

The End

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