这个容易,先说一下具体思路吧:
首先创建一个计时的记分板,用来加时间
然后检测,如果时间到了,就将是建设为零重新计时,并且调用粒子效果的指令在玩家头上冒出爱心。
指令:(直接放到一个命令方块里然后启动就行)(必须是113+的版本)
summon minecraft:falling_block ~ ~1 ~ {BlockState:{Name:"minecraft:redstone_block"},Time:1,Passengers:[{id:"minecraft:pig",Health:0f,Passengers:[{id:"minecraft:falling_block",Time:1,BlockState:{Name:"minecraft:activator_rail"},Passengers:[{id:"minecraft:command_block_minecart",Command:"/gamerule commandBlockOutput false"},{id:"command_block_minecart",Command:'setblock ~ ~2 ~ command_block[facing=up,conditional=false]{auto:1,Command:"scoreboard objectives add time dummy"}'},{id:"command_block_minecart",Command:'setblock ~ ~3 ~ repeating_command_block[facing=up,conditional=false]{auto:1,Command:"scoreboard players add tick time 1"}'},{id:"command_block_minecart",Command:'setblock ~ ~4 ~ chain_command_block[facing=up,conditional=false]{auto:1,Command:"execute if score tick time matches 20 run scoreboard players add s time 1"}'},{id:"command_block_minecart",Command:'setblock ~ ~5 ~ chain_command_block[facing=up,conditional=false]{auto:1,Command:"execute if score tick time matches 20 run scoreboard players set tick time 0"}'},{id:"command_block_minecart",Command:'setblock ~ ~6 ~ chain_command_block[facing=up,conditional=false]{auto:1,Command:"execute as @a at @s if score s time matches 3035 run particle heart ~ ~2 ~ 01 01 01 01 30 force @a"}'},{id:"command_block_minecart",Command:'setblock ~ ~7 ~ chain_command_block[facing=up,conditional=false]{auto:1,Command:"execute if score s time matches 36 run scoreboard players set s time 0"}'},{id:"command_block_minecart",Command:'setblock ~ ~-2 ~ repeating_command_block{auto:1,Command:"fill ~ ~ ~ ~ ~2 ~ air"}'},{id:"command_block_minecart",Command:"kill @e[type=command_block_minecart,distance=1]"}]}]}]}
这个直接塞到命令方块中然后启动就行了,会自动生成,注意一定要在空旷的地方。
这个是计时,当到了30秒之后,头上会出现爱心,持续5秒,然后再过30秒在持续五秒以此类推
加粗字体的地方时可以改动的,第一个3035是设置持续的时间,这个和后面的36相匹配,如果我想在第40秒出现爱心,持续10秒,则应该改为4050,后面的匹配改为51
~ ~2 ~ 是代表的位置,~2是在头顶上。
01 01 01 是代表的范围,就是粒子效果在一定范围内显示。
30是密度,即每运行一次这个命令出现的爱心数量。指令1秒20次
1、选择关闭Bitlocker,d出一个“关闭Bitlocker”对话框,点击“解密驱动器”,将出现正在解密对话框。如图所示:
2、出现解密之后,不一会儿,就可以解密成功了,如图所示:
方法二:1、打开控制面板–进入bitlocker磁盘加密,如图所示:
2、选中启用加密的分区,点击关闭bitlocker
3、接着会提醒您输入解密密码,输入完成后,点击完成,将会提示解密进度。如果忘记了密码,可以点击忘记密码,然后找到设置加密时保存的BitLocker
恢复密钥文本文件
,打开复制粘贴BitLocker
恢复密钥如图:
4、点击完成,会提示解密进度,直到完成退出。
感觉这种加密方式很复杂,我用的是U盘超级加密3000进行加密的加密,解密的时候
只需要选中要解密的文件,点击解密即可。很方便的。也就是说手机软件需先签名才可以使用。
方法一:直接在手机上签名:
首先上网制作你的手机专用证书,下载后存入手机,然后在手机上安装手机签名这个软件,进入软件后导入你的证书和密钥文件,保存设置,然后就可以在手机上给软件签名了。
提醒一下,只有后缀名为sis的软件可以被签名,签名后后缀名为sisx,有些未签名的安装文件后缀名也是sisx,需要用X-plore之类的软件改为sis后才可以签名,否则在签名软件里不会显示这个安装文件。
方法二:把软件在电脑上先签名,然后再装到手机上安装。游戏界面预览:
菜单预览:
自定义每个小方块颜色功能界面:
游戏主要有四部分组成:Square类,Block类,gameField类,游戏引擎
Square类:
这个类描述的对象是组成大方块中的每个小正方形实体。
类设计:
class Square
{
public Point location; //小方块的坐标
public Size size; //小方块大小
public Color foreColor; //小方块前景色
public Color backColor; //小方块背景色
public Square(Size initSize,Color initForeColor,Color initBackColor) //构造函数
{ ……}
public void Draw(SystemIntPtr winHandle) //在指定设备上画方块
{ …… }
public void Erase(SystemIntPtr winHandle)//擦除方块
{ …… }
}
Block类:
这个类描述的对象是某一个大方块的实体。每个大方块由四个小正方形组成,一共有7种组合方式。这个类需要实现一个大方块实体所有的属性和动作。包括:方块的形状,位置,方块左移,右移,下移,旋转等。
类设计:
class Block
{
public Square square1; //组成block的四个小方块
public Square square2;
public Square square3;
public Square square4; private const int squareSize = GameFieldSquareSize; //小方块的边长
public enum BlockTypes
{
undefined = 0,
square = 1,
line = 2,
J = 3,
L = 4,
T = 5,
Z = 6,
S = 7
};//一共有7种形状
public BlockTypes blockType; //方块的形状
//七个小方块的颜色数组
private Color foreColor;
private Color backColor;
//方块的方向
public enum RotateDirections
{
North = 1,
East = 2,
South = 3,
West = 4
};
public RotateDirections myRotation = RotateDirectionsNorth;
public Block(Point thisLocation,BlockTypes bType)
{ ……}
//含有自定义颜色的重载
public Block(Point thisLocation, BlockTypes bType,Color fc,Color bc)
{ ……} /画方块/
public void Draw(SystemIntPtr winHandle)
{…… }
/擦方块/
public void Erase(SystemIntPtr winHandle)
{…… } /移动/
public bool down()
{……}
public bool left()
{……}
public bool right()
{……}
/旋转block/
public void Rotate()
{……}
/检测是否到顶/
public int Top()
{……}
}
GameField类:
这个类描述的对象是游戏场景实体,包括场景的背景色,大小,方块是否还可以移动,以及场景中填满一行的检测等。
类设计:
class GameField
{
public const int width = 20; //场景的宽,以方块个数为单位
public const int height = 30;
public const int SquareSize = 15; //每个四分之一小方块的边长
public static Color BackColor; //场景的背景色
public static SystemIntPtr winHandle; //场景的handle
public static Color[] BlockForeColor ={ ColorBlue, ColorBeige, ColorDarkKhaki, ColorDarkMagenta, ColorDarkOliveGreen, ColorDarkOrange, ColorDarkRed };
public static Color[] BlockBackColor ={ ColorLightCyan, ColorDarkSeaGreen, ColorBeige, ColorBeige, ColorBeige, ColorBeige, ColorBeige };
public static bool isChanged=false; //设置是否被更改的标志位
public static SoundPlayer sound = new SoundPlayer(); //播放声音 public static Square[,] arriveBlock = new Square[width, height]; //保存已经不能再下落了的方块
public static int[] arrBitBlock=new int[height]; //位数组:当某个位置有方块时,该行的该位为1
private const int bitEmpty = 0x0; //0000 0000 0000 0000 0000
private const int bitFull = 0xFFFFF; //1111 1111 1111 1111 1111 /检测某个位置是否为空/
public static bool isEmpty(int x, int y)
{……}
/将方块停住/
public static void stopSquare(Square sq, int x, int y)
{……}
/检测行是否满
返回:成功消除的行数和 (方便统计分数)
/
public static int CheckLines()
{ ……}
/播放声音/
public static void PlaySound(string soundstr)
{……}
/重画/
public static void Redraw()
{ …… }
//结束
}
游戏引擎:
游戏引擎正如其名,就像一个发动机一样让游戏不间断运行。本游戏中就是让方块以一定的速度下落。并响应键盘事件,实行左右移动,和向下加速功能。(代码见源码)
声音播放:
音效是游戏不可缺少的一部分。在Net20中已经提供了一个类来播放声音。在using SystemMedia;命名空间。
本游戏中播放声音的代码如下:(在 GameField类中)
using SystemMedia;
public static SoundPlayer sound = new SoundPlayer();
/播放声音/
public static void PlaySound(string soundstr)
{
switch (soundstr)
{
case "FinishOneLine": //消除一行的声音
if (!FileExists("FinishOneLinewav")) return;
soundSoundLocation = "FinishOneLinewav";
break;
case "CanNotDo": //当无法 *** 作时
if (!FileExists("CanNotDowav")) return;
soundSoundLocation = "CanNotDowav";
break;
}
soundPlay();
}
要播放的时候调用PlaySound()方法即可。
其实步骤很简单,先引用SystemMedia空间,然后创建一个SoundPlayer 对象,用SoundLocation 属性设置声音文件的地址,然后调用Play()方法即可播放。不过注意,这个类可以播放的声音格式只有Wav文件。
保存游戏设置:
在游戏中经常要保存用户自定义的设置。本游戏通过写进ini文件来保存。
主要代码如:
/加载窗体时从配置文件Settingini中读取游戏设置/
private void getSettings()
{
if (!FileExists("Settingini"))
return;
FileStream fs = new FileStream("Settingini", FileModeOpenOrCreate, FileAccessReadWrite);
StreamReader sr = new StreamReader(fs);
string line1=srReadLine();
string line2=srReadLine();
string line3=srReadLine();
if (line1 != null && line1Split('=')Length > 1)
{
GameFieldBackColor = ColorFromArgb(intParse(line1Split('=')[1]));
picBackGroundBackColor = GameFieldBackColor;
}
if (line2 != null && line2Split('=')Length > 1)
GameFieldBlockForeColor = strToColor(line2Split('=')[1]);
if (line3 != null && line3Split('=')Length > 1)
GameFieldBlockBackColor = strToColor(line3Split('=')[1]);
srClose();
fsClose();
}
/如果游戏设置被更改,将新的设置保存到Settingini/
private void saveSettings()
{
FileStream fs = new FileStream("Settingini", FileModeCreate, FileAccessReadWrite);
StreamWriter sw = new StreamWriter(fs);
swWriteLine("GameFieldColor="+GameFieldBackColorToArgb());
swWriteLine("BlockFroeColor=" + colorToStr(GameFieldBlockForeColor));
swWriteLine("BlockBackColor=" + colorToStr(GameFieldBlockBackColor));
swFlush();
swClose();
fsClose();
}
要源码+QQ348199903
Touchpad Blocker 是一款 打字时自动禁用触控板 的工具,可 帮助我们 避免在打字时 因误触触控板 导致 输入错误 等问题。该工具仅有 457 KB 大小, 功能实用 适用于 无外置设备 的用户 下载使用 。与系统内 关闭触控板 功能相比,更加的 高效便捷 。
先访问 软件官网 点击 Download 按钮下载 安装程序 , 双击运行 后点击 OK 按钮确认使用 简体中文 。然后点击 下一步 - 我接受 按钮, 按需修改 程序 安装目录 后点击 安装 按钮即可 完成安装 。
程序打开 后可见 下方图示 的 程序界面 ,程序默认 开机自启 并在底部 任务栏 内显示 托盘图标 。打字时会 自动禁用 触控板,在 打字结束 的 1 秒 后 恢复使用 。如果需要 临时关闭 该功能,可使用 Ctrl + F9 快捷键或手动 取消勾选 程序下方的 Turn blocker On and Off 选项即可。
虽然 Windows 10 用户则可以 在 设置 - 设备 - 触控板 中可直接勾选 关闭触控板 或勾选 连接鼠标时让触摸板保持打开状态 选项,在使用 外设 时可以关闭触控板,但如果 无法使用 外设时, 系统功能 将 无法满足 我们的 使用需要 时不妨安装 Touchpad Blocker 试试。
如果你的日常很少 使用外设 且需要用 电脑码字 的话,我建议你千万 不要错过 这款 体积小巧 但可以解决 触控板误触 问题的小工具。虽然该工具已 停更多年 ,但实测 最新系统 上仍可正常 安装使用 ,有 相关需要 的用户抓紧 下载使用 !
---
关注公众号「 拾集 Plus 」获取更多图文推荐!
软件官网:>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)