「JAVA版方块」我的世界java版隐藏方块

博主:adminadmin 2022-12-01 21:55:07 74

本篇文章给大家谈谈JAVA版方块,以及我的世界java版隐藏方块对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

我的世界Java版怎么实现踩指定方块设置重生点并提示?

循环命令方块 红石比较器 脉冲命令方块

循环命令方块里写execute as @a at @s if block ~ ~-0.1 ~ 方块id run spawnpoint @s ~ ~ ~

脉冲命令方块里写execute as @a at @s if block ~ ~-0.1 ~ 方块id run tellraw @s {"text":"重生点已设置","color":"blue"})

如何用java编写出一个俄罗斯方块小程序?

package com.test.games;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.Timer;

public class Tetris extends JFrame {

public Tetris() {

Tetrisblok a = new Tetrisblok();

addKeyListener(a);

add(a);

}

public static void main(String[] args) {

Tetris frame = new Tetris();

JMenuBar menu = new JMenuBar();

frame.setJMenuBar(menu);

JMenu game = new JMenu("游戏");

JMenuItem newgame = game.add("新游戏");

JMenuItem pause = game.add("暂停");

JMenuItem goon = game.add("继续");

JMenuItem exit = game.add("退出");

JMenu help = new JMenu("帮助");

JMenuItem about = help.add("关于");

menu.add(game);

menu.add(help);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(220, 275);

frame.setTitle("Tetris内测版");

// frame.setUndecorated(true);

frame.setVisible(true);

frame.setResizable(false);

}

}

// 创建一个俄罗斯方块类

class Tetrisblok extends JPanel implements KeyListener {

// blockType 代表方块类型

// turnState代表方块状态

private int blockType;

private int score = 0;

private int turnState;

private int x;

private int y;

private int i = 0;

int j = 0;

int flag = 0;

// 定义已经放下的方块x=0-11,y=0-21;

int[][] map = new int[13][23];

// 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵

private final int shapes[][][] = new int[][][] {

// i

{ { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },

{ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } },

// s

{ { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },

{ 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } },

// z

{ { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } },

// j

{ { 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },

// o

{ { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },

// l

{ { 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },

// t

{ { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } };

// 生成新方块的方法

public void newblock() {

blockType = (int) (Math.random() * 1000) % 7;

turnState = (int) (Math.random() * 1000) % 4;

x = 4;

y = 0;

if (gameover(x, y) == 1) {

newmap();

drawwall();

score = 0;

JOptionPane.showMessageDialog(null, "GAME OVER");

}

}

// 画围墙

public void drawwall() {

for (i = 0; i  12; i++) {

map[i][21] = 2;

}

for (j = 0; j  22; j++) {

map[11][j] = 2;

map[0][j] = 2;

}

}

// 初始化地图

public void newmap() {

for (i = 0; i  12; i++) {

for (j = 0; j  22; j++) {

map[i][j] = 0;

}

}

}

// 初始化构造方法

Tetrisblok() {

newblock();

newmap();

drawwall();

Timer timer = new Timer(1000, new TimerListener());

timer.start();

}

// 旋转的方法

public void turn() {

int tempturnState = turnState;

turnState = (turnState + 1) % 4;

if (blow(x, y, blockType, turnState) == 1) {

}

if (blow(x, y, blockType, turnState) == 0) {

turnState = tempturnState;

}

repaint();

}

// 左移的方法

public void left() {

if (blow(x - 1, y, blockType, turnState) == 1) {

x = x - 1;

}

;

repaint();

}

// 右移的方法

public void right() {

if (blow(x + 1, y, blockType, turnState) == 1) {

x = x + 1;

}

;

repaint();

}

// 下落的方法

public void down() {

if (blow(x, y + 1, blockType, turnState) == 1) {

y = y + 1;

delline();

}

;

if (blow(x, y + 1, blockType, turnState) == 0) {

add(x, y, blockType, turnState);

newblock();

delline();

}

;

repaint();

}

// 是否合法的方法

public int blow(int x, int y, int blockType, int turnState) {

for (int a = 0; a  4; a++) {

for (int b = 0; b  4; b++) {

if (((shapes[blockType][turnState][a * 4 + b] == 1)  (map[x + b + 1][y + a] == 1))

|| ((shapes[blockType][turnState][a * 4 + b] == 1)  (map[x + b + 1][y + a] == 2))) {

return 0;

}

}

}

return 1;

}

// 消行的方法

public void delline() {

int c = 0;

for (int b = 0; b  22; b++) {

for (int a = 0; a  12; a++) {

if (map[a][b] == 1) {

c = c + 1;

if (c == 10) {

score += 10;

for (int d = b; d  0; d--) {

for (int e = 0; e  11; e++) {

map[e][d] = map[e][d - 1];

}

}

}

}

}

c = 0;

}

}

// 判断你挂的方法

public int gameover(int x, int y) {

if (blow(x, y, blockType, turnState) == 0) {

return 1;

}

return 0;

}

// 把当前添加map

public void add(int x, int y, int blockType, int turnState) {

int j = 0;

for (int a = 0; a  4; a++) {

for (int b = 0; b  4; b++) {

if (map[x + b + 1][y + a] == 0) {

map[x + b + 1][y + a] = shapes[blockType][turnState][j];

}

;

j++;

}

}

}

// 画方块的的方法

public void paintComponent(Graphics g) {

super.paintComponent(g);

// 画当前方块

for (j = 0; j  16; j++) {

if (shapes[blockType][turnState][j] == 1) {

g.fillRect((j % 4 + x + 1) * 10, (j / 4 + y) * 10, 10, 10);

}

}

// 画已经固定的方块

for (j = 0; j  22; j++) {

for (i = 0; i  12; i++) {

if (map[i][j] == 1) {

g.fillRect(i * 10, j * 10, 10, 10);

}

if (map[i][j] == 2) {

g.drawRect(i * 10, j * 10, 10, 10);

}

}

}

g.drawString("score=" + score, 125, 10);

g.drawString("抵制不良游戏,", 125, 110);

g.drawString("拒绝盗版游戏。", 125, 170);

// g.drawString("注意自我保护,", 125, 90);

// g.drawString("谨防受骗上当。", 125, 110);

// g.drawString("适度游戏益脑,", 125, 130);

// g.drawString("沉迷游戏伤身。", 125, 150);

// g.drawString("合理安排时间,", 125, 170);

// g.drawString("享受健康生活。", 125, 190);

}

// 键盘监听

public void keyPressed(KeyEvent e) {

switch (e.getKeyCode()) {

case KeyEvent.VK_DOWN:

down();

break;

case KeyEvent.VK_UP:

turn();

break;

case KeyEvent.VK_RIGHT:

right();

break;

case KeyEvent.VK_LEFT:

left();

break;

}

}

// 无用

public void keyReleased(KeyEvent e) {

}

// 无用

public void keyTyped(KeyEvent e) {

}

// 定时器监听

class TimerListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

repaint();

if (blow(x, y + 1, blockType, turnState) == 1) {

y = y + 1;

delline();

}

;

if (blow(x, y + 1, blockType, turnState) == 0) {

if (flag == 1) {

add(x, y, blockType, turnState);

delline();

newblock();

flag = 0;

}

flag = 1;

}

;

}

}

}

您好,请问JAVA版我的世界和基岩版我的世界有什么区别,功能和方块方面有什么区别?

目前Java版的内容相比基岩版更加丰富,因为这款游戏一开始就是以Java开发的,只是后来智能手机普及后就多开发了基岩版(早期间手机版还叫做口袋版,是现在基岩版的前身),就目前官方制作方面,总是会先更新Java版后再更新基岩版。

现在官方已经快把基岩版的内容赶上Java版了,所以原版游戏内的区别也不算太大。

硬要说区别,明显的就是Java版是完全面向电脑玩家的,而基岩版是面向手机或平板上等等智能便携设备玩家的,当然现在电脑也能玩基岩版,但是真没多少电脑玩家会选择玩基岩版而不是Java版。其次,在游戏操控上,目前Java版原版对键盘鼠标之外的输入设备(例如手柄)没有支持(除非对游戏文件安装这方面的额外支持),而基岩版好像是可以支持手柄键入的。

接着就是,基岩版现在好像是内置了资源商店,可以在里面购买和下载官方或其他玩家制作的优秀地图包、材质包、Addons、皮肤包,而Java版没有内置这些东西,但Java版的游戏社区更加活跃,很多优秀的作品玩家都有发在论坛或是一些资质比较优良的网站上,随便一搜就出来一堆,所以官方也没必要在Java版内置这些东西。

提到游戏资源方面就得说说MOD了,Java版对第三方MOD开发者来说更加友好,容易让广大编程爱好者为这款游戏开发出更多内容,这也就促进了这款游戏的活跃性,而基岩版虽然目前官方也在更新后提供了Addon接口以方便让第三方MOD载入游戏,但市面上确实是JAVA版的MOD更为丰富(毕竟历来七八年积累下来的,可以说是百花齐放,什么方面的MOD几乎都有)。

还有一点也要说一下,游戏内的指令方面。Java版的指令非常多,以至于有些高端玩家直接通过游戏中的指令制作使用原版红石和命令方块驱动的“MOD”,这种制作出来的“原版MOD”根本不像一般常规MOD那样要下载相关文件,只需要一条指令(当然很长就是了),复制粘贴到游戏内用命令方块执行,也能实现一些常规MOD做得到的内容,而在基岩版方面,有些Java版的指令基岩版还没有,或者是指令中有效参数并没有那么多,所以要用指令来制作“MOD”还是比较困难的,这样就体现了基岩版的可玩性还是没有Java版那么丰富。

可玩性方面还有一点区别,红石活塞方面,在Java版中有个特性,叫做BUD,这个特性可以让活塞跟充能的红石隔开一格后依然能保持伸出状态,具体的特性描述一下讲不完,可以去网址“minecraft-zh.gamepedia.com/教程/方块更新感应器”(复制粘贴到浏览器地址栏)里查看,这个特性是基岩版没有的,这也就导致一些相同功能的红石设备在基岩版里比在Java版里要难搭建。不过基岩版还是有个特性是一些容器方块(比如箱子、熔炉、发射器等可以打开界面放入物品的方块)可以被活塞推动,而Java版是做不到的,Java版的容器方块没法被活塞推动。

以上说的功能方面的区别都是比较明显的,还有一些鸡毛蒜皮的小差异我就不一一去讲了,毕竟那些小差异也不是那么影响游戏体验。

然后方块方面的区别吧,也就是基岩版特有的那几个方块,比如脚手架方块,Java版目前还没有,其他的也都差不多,因为上面也说了,官方已经尽可能的在让基岩版追赶上Java版了。

总结:

Java版面向电脑玩家;基岩版面向移动设备玩家。

Java版原版没有兼容手柄键入;而基岩版原版支持使用手柄。

Java版游戏社区活跃,相关资源作品不需要官方帮助提供;基岩版游戏相关资源作品可在游戏内置商店获取(当然也可以自行在游戏外下载安装)。

Java版第三方MOD由于历史积累非常丰富;而基岩版由于官方提供的Addons支持是比较新的功能,所以相比较历史积累来说要少一些。

Java版游戏内指令丰富,可制作“原版MOD”;基岩版指令功能相比较要少一点,制作“原版MOD”较有难度。

Java版活塞有BUD特性;基岩版没有。

Java版活塞不能推动容器方块;基岩版活塞可以推动容器方块。

以上!!打字也不易(一千六百多个字,至少也有半个多小时了。。)

希望采纳哦~

最后!祝游戏愉快~

JAVA版方块的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于我的世界java版隐藏方块、JAVA版方块的信息别忘了在本站进行查找喔。

The End

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