求挖掘俄罗斯方块消除算法掉落物品的算法

Minecraft 1.8 挖掘效率算法详解【明月庄主吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:22,424贴子:
Minecraft 1.8 挖掘效率算法详解
应庄主邀请,今天研究了一下1.8挖掘速度方面的代码,略微整理了一下。必须要说这部分代码涉及的概念有点多,我尽力说的明白一点……
竹林,湖水,农家菜,儿童乐园,烧烤,钓鱼,农家乐..爸爸妈妈的养生地,小朋友们的乐园!
先介绍一下MC里挖掘的机制,当鼠标点一个方块时,即开始挖掘这个方块,有的方块可以直接破坏,有的需要按住鼠标以持续挖掘。挖掘进度初始为0,每1刻根据挖掘工具、挖掘方块、玩家位置等因素增加一定值(后文称这个值为挖掘效率),增加至1时方块被破坏。每个游戏刻只能破坏一个方块。破坏两个方块之间有5刻的冷却时间。但是,在非创造模式下,如果挖掘效率&=1(即方块可以直接破坏),将不会有这个冷却,比如效率V的铲子可以一下子破坏很多土方块。在创造模式下,通过连点的方式(连续点鼠标)也可以无视这个冷却。
挖掘效率的公式为挖掘效率 = (工具效率 + 附魔修正值 ) * 增益修正值 * 减益修正值 / 水中修正值 / 悬空修正值 / 硬度 / 收割修正值式中几个值的计算方式如下:
工具效率:如果没有用工具或者所用工具不适用于挖所挖方块(比如用铲子砍树),工具效率为1;铲子、稿子、斧头对适用方块的效率与工具的材料有关(木2,石4,铁6,钻8,金12);剑对网的效率为15,对草、花、瓜、树叶等效率为1.5;剪刀对树叶和网的效率为15,对羊毛的效率为5。
附魔修正值:如果工具效率为1,附魔修正值为0;否则为“效率附魔等级的平方 + 1”。
增益修正值:即“急迫”buff。值为“1 + 增益等级 * 0.2 ”。
减益修正值:即“挖掘疲劳”debuff。值为0.3^(减益等级),最大为0.3^4=8.1e-4。不过原版游戏中貌似只出现了挖掘疲劳III,修正值为2.7e-3。
水中修正值:如果玩家在水中为5,否则为1。
悬空修正值:如果玩家脚离地为5,否则为1。
收割修正值:如果此工具(或空手)可以在破坏此方块后得到物品,为30,否则为100。
为了进一步说明挖掘速度的算法,我们来举几个例子
急迫II效率V钻石镐挖圆石钻石镐挖圆石的工具效率为8,效率V的附魔修正值为5^2+1=26,急迫II的修正值为1+2*0.2=1.4,圆石的硬度为2,收割修正值为30(稿子可以收集圆石)。综合起来挖掘效率为(8+26)*1.4/2/100=0.7933,需要2T破坏,两次破坏之间还会触发5T的冷却,总计7T可以破坏一个圆石。
急迫II效率V钻石镐挖石头石头的硬度是1.5,本例其他部分与上例相同。故挖掘效率为(8+26)*1.4/1.5/100=1.0578,需要1T破坏,不会触发5T冷却,总计1T破坏一个石头。从这两个例子可以看出如果造石机想要高效率,必然是要生成石头而不是圆石,而且需要急迫II效率V钻石镐做支持,少任意一个条件都会使效率大大下降。
达到1T破坏草方块所需要钻石铲的最低附魔钻石铲挖草方块的工具效率为8,设附魔等级为x,附魔修正值为x^2+1,草方块的硬度为0.6,收割修正值为30。可得不等式(8+x^2+1)/0.6/30&=1,解得x&=3。另外泥土方块的硬度为0.5,相应不等式为(8+x^2+1)/0.5/30&=1,解得x&2。本例可以看出铲子附魔效率III就可以了,更高的附魔基本上是在浪费修理花费的等级……而考虑到快速破坏泥土经常会导致误操作,可以附魔效率II作为“精修铲”。
被蜘蛛网黏在空中时徒手破坏蜘蛛网:徒手的工具效率为1,悬空修正5,蜘蛛网的硬度为4(牛逼蛛网硬比石头),由于徒手不能收集蛛网,收割修正为100。综合起来挖掘效率为1/5/4/100=1/2000,也就是s可以逃脱。另外,如果改为用剑,由于剑可以收割网(获得线),收割修正改为30,而且剑对网的效率为15,故挖掘效率为15/5/30=0.1,只要10T就可以逃脱。
另外我最近开了自己的博客(http://etflly.me),近期的计划是更读MC源码的成果。本文的原始链接为http://etflly.me/?p=94
不是30*硬度/((效率+效率附魔)*急迫) 么? ——————来自中二病精神操纵端 觉醒吧邪王真眼爆裂吧现实崩断吧精神粉碎吧世界
大皇帝页游新区入口,策略游戏选大皇帝,点击领取礼包,新服送首冲高返利!
应该反过来除吧,这样得出结果是多少T挖下来,你这结果的单位算啥…… ——————来自中二病精神操纵端 觉醒吧邪王真眼爆裂吧现实崩断吧精神粉碎吧世界
3级的大触0.o
又见大触惹QWQ
希望etfl能详细说下木 石 铁 金 钻 的 斧 铲 镐 分别挖掘对应的方块的时间是多少效率1 2 3 4 5 之后分别又是多少加了急迫又是多少秒破坏一个方块
厉害啊,虽然觉得游戏时没用。。
身为数学狂人的楼主值得我们学习!向楼主致敬!
贴吧热议榜
使用签名档&&
保存至快速回贴大牛们都来帮忙看看啊,俄罗斯方块算法超简单,就是方块没有方法固定住,求高手支招 - ITeye问答
import java.awt.C
import java.awt.F
import java.awt.G
import java.awt.event.KeyE
import java.awt.event.KeyL
import java.awt.event.WindowA
import java.awt.event.WindowE
public class Test extends Frame implements Runnable,KeyListener {
int blockType = 0;
int turnState = 0;
int x = 0;
int y = 0;
private int[][] map = new int[30][50];
private final int shapes[][][] = new int[][][] {
&&&&&&&&&&& { { 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 launchFrame() {
setSize(300,500);
setBackground(Color.WHITE);
setResizable(false);
setVisible(true);
setTitle("俄罗斯方块1.0");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
addKeyListener(this);
for(int i=0; i&30; i++) {
for(int j =0; j&50; j++) {
map[i][j]=2;
new Thread(this).start();
public Test() {
newBlock();
public void newBlock() {
blockType = (int)(Math.random()*1000)%7;
turnState = (int)(Math.random()*1000)%4;
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.PINK);
for(int i=0; i&30; i++) {
for(int j =0; j&50; j++) {
if(map[i][j]==2)
g.drawRect(i*10, j*10, 10, 10);
if(map[i][j]==1)
g.fillRect(i*10,j*10,10,10);
g.setColor(Color.BLUE);
for(int j = 0; j&16; j++) {
if(shapes[blockType][turnState][j] == 1) {
g.fillRect((j%4+x+1)*10,(j/4+y)*10,10,10);
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
&&&&&&& case KeyEvent.VK_DOWN:
&&&&&&&
if(y&50)
&&&&&&&&&&& y++;
&&&&&&&&&&& repaint();
&&&&&&&&&&&
&&&&&&& case KeyEvent.VK_UP:
&&&&&&&
int tempturnState = turnS
&&&
turnState = (turnState+1) % 4;
&&&
repaint();
&&&&&&&&&&&
&&&&&&& case KeyEvent.VK_RIGHT:
&&&&&&&&&&& if(x&30)
&&&&&&&
x++;
&&&&&&&&&&& repaint();
&&&&&&&&&&&
&&&&&&& case KeyEvent.VK_LEFT:
&&&&&&&&&&& if(x&0)
&&&&&&&
x--;
&&&&&&&&&&& repaint();
&&&&&&&&&&&
&&&&&&& }
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public static void main(String[] args) {
new Test().launchFrame();
public void run() {
boolean flag =
while(flag) {
repaint();
Thread.sleep(300);
if(y &= 50) {
newBlock();
} catch (InterruptedException e) {
e.printStackTrace();
运行后,键盘方向键左,右,下分别控制方块向左,右,下移动,向上键控制方块变形。目前1.0版本方块固定不住,希望高手给个方法解决,不胜感激!
好像有个俄罗斯方块的java代码 才100多点行数!!!
网上找个俄罗斯方块的代码,看看啊!
已解决问题
未解决问题来自Minecraft Wiki
(重定向自)
统计屏幕。
“统计”是游戏中一部分功能,统计可以计算玩家完成特定目标的次数。
统计信息共分为四栏:通用、方块、物品以及生物。通用窗口分门别类地显示了大量数据,详细数据如下表所示。方块窗口显示了每一种方块被合成、使用(放置)挖掘、拾起以及掉落的次数。物品窗口显示了不同物品被消耗、合成、使用、拾起以及掉落的次数。生物窗口显示了玩家击杀生物的次数,或者被敌对生物击杀的次数。在方块和物品窗口可以通过单击顶部的按钮进行排序。
统计目前只出现在和里,主机版用排行榜代替了统计,但是统计至今都没出现在里。
游戏退出次数
通过单击“保存并退回到标题画面”退出的次数。
stat.leaveGame
游戏时间(分钟)
总游戏时间。并不一定会以分钟的形式显示:可能是秒、分钟、小时或者是天,取决于哪一个单位更能描述游戏时间。如果游戏暂停,游戏时间也随之停止。如果游戏时间显示为“5.5h”,它意味着您已经玩了5个小时30分钟(并不是50分钟)。
stat.playOneMinute
上次死亡时间
从上次死亡之后生存的时间
stat.timeSinceDeath
按住键盘上的的时间.
stat.sneakTime
在游戏中行走的总距离。
stat.walkOneCm
在游戏中潜行的总距离。
stat.crouchOneCm
在游戏中疾跑的总距离。
stat.sprintOneCm
在游戏中游泳的总距离。在水中跋涉游泳距离也会增加。水中跳跃的垂直距离并不包括其中。
stat.swimOneCm
在游戏中除跳跃外掉落的总高度。如果玩家掉落高度超过一方块,则此次掉落将被计算在内。
stat.fallOneCm
在游戏中攀爬和的总高度。
stat.climbOneCm
在游戏中飞行的总距离,离地至少一方块高的飞行才会被计算在内。
stat.flyOneCm
水下移动距离
在游戏中水下移动的总距离。
stat.diveOneCm
坐矿车移动距离
在游戏中乘坐移动的总距离。
stat.minecartOneCm
坐船移动距离
在游戏中乘移动的总距离。
stat.boatOneCm
骑猪移动距离
在游戏中通过放置进而骑乘移动的总距离。
stat.pigOneCm
骑马移动距离
在游戏中通过放置进而骑乘移动的总距离。
stat.horseOneCm
鞘翅飞行距离
在游戏中鞘翅飞行的总距离。
stat.aviateOneCm
在游戏中跳跃的总次数。
在游戏中玩家造成超过1()伤害的近战伤害总和。
stat.damageDealt
在游戏中玩家所受到所有超过1()伤害的伤害总和。
stat.damageTaken
在游戏中玩家死亡的次数。
stat.deaths
生物击杀次数
在游戏中玩家击杀生物的次数。
stat.mobKills
玩家击杀次数
在多人游戏(PvP服务器)中击杀玩家的总数,间接杀害不被计算在内。
stat.playerKills
物品掉落次数
在游戏中玩家掉落物品的总次数。因死亡而掉落物品不被计算在内。
物品附魔次数
在游戏中物品附魔的次数
stat.itemEnchanted
生物繁殖次数
在游戏中让动物繁殖的次数。
stat.animalsBred
在游戏中捕到鱼的总数。
stat.fishCaught
与村民对话
玩家与对话的次数。(打开与村民的交易界面)
stat.talkedToVillager
与村民交易
玩家与村民交易的次数。
stat.tradedWithVillager
吃掉的蛋糕片数
玩家吃掉的蛋糕片数。
stat.cakeSlicesEaten
玩家用水填满炼药锅的次数。
stat.cauldronFilled
从炼药锅取水次数
玩家从炼药锅中取水的次数。
stat.cauldronUsed
清洗盔甲次数
玩家在炼药锅中洗掉盔甲颜色的次数。
stat.armorCleaned
清洗旗帜次数
玩家在炼药锅中洗掉旗帜颜色的次数。
stat.bannerCleaned
与酿造台互动次数
玩家与酿造台互动的次数。
stat.brewingstandInteraction
与互动次数
玩家与信标互动的次数。
stat.beaconInteraction
与互动次数
玩家与工作台互动的次数。
stat.craftingTableInteraction
与互动次数
玩家与熔炉互动的次数。
stat.furnaceInteraction
玩家搜查发射器的次数。
stat.dispenserInspected
玩家搜查投掷器的次数。
stat.dropperInspected
玩家搜查漏斗的次数。
stat.hopperInspected
玩家打开箱子的次数。
stat.chestOpened
陷阱箱触发次数
玩家触发陷阱箱的次数。
stat.trappedChestTriggered
打开末影箱次数
玩家打开末影箱的次数。
stat.enderchestOpened
玩家击打音符盒的次数。
stat.noteblockPlayed
音符盒调音次数
玩家与音符盒互动的次数。
stat.noteblockTuned
盆栽种植次数
玩家向花盆中放置植物的次数。
stat.flowerPotted
播放唱片次数
玩家在中播放唱片的次数。
stat.recordPlayed
躺在床上的次数
玩家在上睡觉的次数。
stat.sleepInBed
打开的次数
玩家打开的次数。
stat.shulkerBoxOpened
统计信息存储于.minecraft/saves/world name/stats/uuid.json(服务器则为world name/stats/uuid.json)中,并根据玩家的统计信息和成就进行更新。文件结构基于JSON,通常如下所示:
{"stat.xxxxxx":value,"stat.xxxxxx":value,"stat.xxxxxx":value,...}
统计信息通常保存在stats-change段中,如果不需要更新则留空。举例来说,在你跳之前,跳跃次数将没有被记录。距离将以厘米的单位存储、时间将以的单位存储(1刻等于0.05秒)。以离开游戏时间为例:
{"stat.leaveGame":4}
在他的博客中谈到统计(以及):
成就并不会如同“砍倒10000棵树”这般琐碎,而更类似于“骑着猪从悬崖上掉下来”的这般挑战。然而统计数据则不然,统计信息用来记录您已经砍到了多少棵树。我们长期的计划是可以在minecraft.net中profile一栏显示您的成就和统计,如果您希望用来吹嘘自己的战果时可以用到。
——评论于他的博客里
添加统计。
在线保存统计数据计划在Beta 1.6 加入,但在这一点上被认为太容易出错。
现在每个世界都会储存统计信息,而不是储存在全球范围内。添加了骑马距离、动物繁殖次数、钓到垃圾次数和钓到宝物次数的统计。移除了游玩时间、创建世界次数、保存/加载世界次数和多人联机次数的统计。
统计现在有了自己的UUID而不是玩家的名称,现有文件的名称已转换。
发布了一幅有关于新增的潜行距离和疾跑距离的统计的图片。
添加了潜行距离、疾跑距离和上次死亡时间的统计。
添加了与村民对话和与村民交易的统计。
添加了以下统计:
吃掉的蛋糕片数,炼药锅装水次数,从炼药锅取水次数,清洗盔甲次数,清洗旗帜次数, 与酿造台互动次数,与信标互动次数,搜查投掷器次数,搜查漏斗次数,搜查发射器次数,音符盒播放次数,音符盒调音次数,盆栽种植次数,陷阱箱触发次数, 末影箱打开次数,物品附魔次数,播放唱片次数,与熔炉互动次数,与工作台互动次数和开箱次数
添加了潜行时间的统计。
添加了物品的拾起和物品的掉落的统计。
添加了躺在床上的次数的统计。
添加了鞘翅飞行总距离的统计
移除了钓到垃圾次数和钓到宝物次数的统计
有关于“统计”的漏洞由维护。请在那里汇报漏洞。
统计信息会忽视数据元。也就是说,所有类型的、、和将会作为同一样物品进行计算。和也会被计为同一种物品。
在物品菜单中,并没有。这是由于墨囊与染料共用同一ID
“合成次数”包括熔炼,比如通过树木制作木炭。
在统计信息中会显示其成熟的样子,包括果实顶部和四周。
统计数字不能计算玩家杀死的、或的数量,或者玩家被这些敌对生物杀死的次数。
方块统计屏幕
物品统计屏幕能不能弄一个把人、实体,变成方块、掉落物品的JS【minecraftpe吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:494,576贴子:
能不能弄一个把人、实体,变成方块、掉落物品的JS
输入ID然后点实体变方块、物品,求大神实现啊
大皇帝页游新区入口,策略游戏选大皇帝,点击领取礼包,新服送首冲高返利!
可以啊,等我破解so文件
so文件是神马
可不可以拿模型做
好提议 做完能@我一下吗?我好想可基友玩躲猫猫
做出来就真牛了
走动的方块?
其实你可以在pc上玩玩mineplex服务器的躲猫猫
要是pe版有就好了
那是国外服,你认为呢
这吧的大神好厉害
贴吧热议榜
使用签名档&&
保存至快速回贴

我要回帖

更多关于 俄罗斯方块算法 的文章

 

随机推荐