用户:
Lingooy_月查看:9 回复:2 评论:9 创建时间:2021-07-20T16:33:23
最近考古时,发现吉吉喵曾说过:
谁能最先创作出可运行的象棋地图,
将被推荐到box3.codemao.cn首页!
但,如今过了这么久,就没有一个可运行的象棋地图
所以,我也不做....
代码给你们,看哪个无聊的做一下,上下首页
代码如下:
var 设置棋子 = 1//变量用中文好辩认,在作品中可改变量名称
var 当前编号 = 0
var 选择棋子 = 0
var 临时造型编号 = 0
var 临时位置 = 0
var 临时方向 = 0
var 临时变量 = 0
var 下棋方 = 0
var 落子位置 = 0
self.var 棋子编号 = 0
self.var 编号 = 0
var 判定将军 = 0
var 将军检测编号 = 0
var 棋子造型 = [5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 7, 7];
var 棋子位置 = [];
var 方向 = [1, 10, '-1', '-10'];
var 九格位置 = [3, 4, 5, 13, 14, 15, 23, 24, 25];
var 斜角方向 = [11, 9, '-11', '-9'];
var 马跳方向 = ['-8', 12, 19, 21, 8, '-12', '-19', '-21'];
var 历史记录 = [];
function 移到位置(X, Y) {
set_xy(获得坐标X(null), 获得坐标Y(null));
}
function 检测胜负() {
if ((棋子位置[4] < 0)) {
send_signal('黑棋获胜');
} else if ((棋子位置[20] < 0)) {
send_signal('红棋获胜');
} else if ((检测棋子个数(null, null) === 0)) {
if ((下棋方 === 0)) {
send_signal('黑棋获胜');
} else {
send_signal('红棋获胜');
}
} else {
}
}
function 落子判定(目标位置, 造型编号, 起始位置, 下棋方) {
if ((目标位置 < 0 || 目标位置 % 10 > 8 || 目标位置 >= 100)) {
return false;
} else if ((棋子位置.includes(目标位置) && Math.floor(棋子位置.indexOf(目标位置) / 17) === 下棋方)) {
return false;
} else {
// 如果是帅或将
// 如果是士
// 如果是象
// 如果是马
// 如果是车
// 如果是炮
// 如果是兵
if ((造型编号 === 1)) {
if ((方向.includes((目标位置 - 起始位置)) && 九格位置.includes(转为己方位置(null, null)))) {
return true;
} else {
return false;
}
} else if ((造型编号 === 2)) {
if ((斜角方向.includes((目标位置 - 起始位置)) && 九格位置.includes(转为己方位置(null, null)))) {
return true;
} else {
return false;
}
} else if ((造型编号 === 3)) {
if ((斜角方向.includes(((目标位置 - 起始位置) / 2)) && !棋子位置.includes(((起始位置 + 目标位置) / 2)) && 转为己方位置(null, null) < 50)) {
return true;
} else {
return false;
}
} else if ((造型编号 === 4)) {
if (马跳方向.includes((目标位置 - 起始位置))) {
if (棋子位置.includes((起始位置 + 方向[Math.floor((马跳方向.indexOf((目标位置 - 起始位置)) + 1) / 2) - 1]))) {
return false;
} else {
return true;
}
} else {
return false;
}
} else if ((造型编号 === 5)) {
if ((检测棋子个数(null, null) === 0)) {
return true;
} else {
return false;
}
} else if ((造型编号 === 6)) {
if (棋子位置.includes(目标位置)) {
if ((检测棋子个数(null, null) === 1 && Math.floor(棋子位置.indexOf(目标位置) / 17) != 下棋方)) {
return true;
}
return false;
} else if ((检测棋子个数(null, null) === 0)) {
return true;
} else {
return false;
}
} else if ((造型编号 === 7)) {
if ((转为己方位置(null, null) < 50)) {
if ((转为己方位置(null, null) - 转为己方位置(null, null) === 10)) {
return true;
} else {
return false;
}
} else {
if ((方向.includes((转为己方位置(null, null) - 转为己方位置(null, null))) && 转为己方位置(null, null) - 转为己方位置(null, null) != -10)) {
return true;
} else {
return false;
}
}
} else {
return false;
}
}
return false;
}
function 检测棋子个数(起始位置, 结束位置) {
if (((起始位置 - 结束位置) % 10 == 0)) {
if ((结束位置 > 起始位置)) {
临时方向 = 10;
} else {
临时方向 = -10;
}
} else if ((Math.floor(起始位置 / 10) === Math.floor(结束位置 / 10))) {
if ((结束位置 > 起始位置)) {
临时方向 = 1;
} else {
临时方向 = -1;
}
} else {
return -1;
}
临时位置 = 起始位置 + 临时方向;
临时变量 = 0;
while(!(临时位置 === 结束位置)) {
if (棋子位置.includes(临时位置)) {
临时变量 = 临时变量 + 1;
}
临时位置 = 临时位置 + (临时方向);
}
return 临时变量;
}
function 检测将军(下棋方) {
判定将军 = 0;
if ((下棋方 === 0)) {
将军检测编号 = 1;
for (var _count = 0; _count < 16; _count++;) {
if (落子判定(null, null, null, null)) {
判定将军 = 1;
break;
}
将军检测编号 = 将军检测编号 + 1;
}
} else {
将军检测编号 = 17;
for (var _count2 = 0; _count2 < 16; _count2++;) {
if (落子判定(null, null, null, null)) {
判定将军 = 1;
break;
}
将军检测编号 = 将军检测编号 + 1;
}
}
if ((判定将军 === 1)) {
world.say('将军')
}
}
function 当前位置() {
return (获得位置Y(null) * 10 + 获得位置X(null));
}
function 转为己方位置(位置, 下棋方) {
if ((下棋方 === 0)) {
return 位置;
} else {
return (98 - 位置);
}
}
when_get_signal('悔棋', function() {
if ((棋子位置[棋子编号 - 1] >= 0)) {
show();
移到位置(null, null);
} else {
hide();
}
});
when_get_signal('翻转', function() {
if ((棋子编号 > 16)) {
add_rotation(180);
}
});
when_start(function() {
棋子编号 = 设置棋子;
设置棋子 = 设置棋子 + 1;
if ((棋子编号 > 16)) {
change_shape_by_index((棋子造型[(棋子编号 - 16) - 1] + 7));
} else {
change_shape_by_index(棋子造型[棋子编号 - 1]);
}
棋子位置.splice(self.棋子编号 - 1, 1, 当前位置());
show();
});
when(function() {
while (true) {
if world.is_mouse_click() {
if ((选择棋子 === 0 && Kitten.is_touched('Self', 'mouse'))) {
if ((Math.floor(棋子编号 / 17) === 下棋方)) {
world.say('举棋')
send_layer_front();
选择棋子 = 棋子编号;
set_size('50');
} else {
world.say('错误')
}
} else if ((选择棋子 === 棋子编号)) {
落子位置 = 当前位置();
临时造型编号 = Kitten.value_of_object('Self', 'style_index');
if ((临时造型编号 > 7)) {
临时造型编号 = 临时造型编号 - 7;
}
if (落子判定(null, null, null, null)) {
world.say('落子')
set_size('40');
历史记录.push(String(棋子位置));
send_signal_and_wait('落子');
选择棋子 = 0;
移到位置(null, null);
棋子位置.splice(self.棋子编号 - 1, 1, 当前位置());
检测胜负();
检测将军(null);
下棋方 = 1 - 下棋方;
} else {
set_size('40');
wait_for_sec(0);
移到位置(null, null);
world.say('错误')
选择棋子 = 0;
}
} else {
}
}
}
});
when_get_signal('落子', function() {
if ((棋子位置[棋子编号 - 1] === 落子位置)) {
world.say('吃')
棋子位置.splice(self.棋子编号 - 1, 1, -1);
hide();
}
});
when(function() {
while (true) {
if (选择棋子 === 棋子编号) {
move_to('mouse_pointer');
}
}
});
var 设置棋子 = 1
var 当前编号 = 0
var 选择棋子 = 0
var 临时造型编号 = 0
var 临时位置 = 0
var 临时方向 = 0
var 临时变量 = 0
var 下棋方 = 0
var 落子位置 = 0
var 判定将军 = 0
var 将军检测编号 = 0
var 棋子造型 = [5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 7, 7];
var 棋子位置 = [];
var 方向 = [1, 10, '-1', '-10'];
var 九格位置 = [3, 4, 5, 13, 14, 15, 23, 24, 25];
var 斜角方向 = [11, 9, '-11', '-9'];
var 马跳方向 = ['-8', 12, 19, 21, 8, '-12', '-19', '-21'];
var 历史记录 = [];
when_get_signal('黑棋获胜', function() {
world.say('胜利')
send_layer_front();
change_shape('黑方胜利');
show();
set_size('10');
for (var _count = 0; _count < 10; _count++;) {
add_size(5);
}
stop_project();
});
when_get_signal('红棋获胜', function() {
Kitten.play_sound('胜利')
send_layer_front();
change_shape('红方胜利');
show();
set_size('10');
for (var _count2 = 0; _count2 < 10; _count2++;) {
add_size(5);
}
stop_project();
});
代码出错别找我()
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee