网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月25日漏签0天
esp8266吧 关注:4,603贴子:10,236
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 5回复贴,共1页
<<返回esp8266吧
>0< 加载中...

8266+JS脚本语言实现ABC小游戏

  • 只看楼主
  • 收藏

  • 回复
  • pengzhenxx
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
视频来自:百度贴吧


  • pengzhenxx
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
还是照例贴一下JavaScript脚本源码,,,当然全中文开发也可以,这里就用英文的吧
/*
项目名称: ABC_Game
创建时间: 2020年7月25日
*/
oled = OLED({
"addr":0x78,
"scl":SYS.pin("D1"),
"sda":SYS.pin("D2")
});
oled.show(0,0,"A:00 B:00");
A = {
"pos":[8,2],
"dir":1,
"char":"A",
"score":0,
"t":0
};
B = {
"pos":[120,4],
"dir":2,
"char":"B",
"score":0,
"t":0
};
sa(A);
sa(B);
C = {
"pos":[24,4],
"char":"C"
};
function ca(obj)
{
global oled;
oled.show(obj.pos[0], obj.pos[1], " ");
}
function sa(obj)
{
global oled;
oled.show(obj.pos[0], obj.pos[1], obj.char);
}
function formatNum(n)
{
return n < 10 ? "0"+n : String(n);
}
function isWin(obj)
{
global oled, A, B;
oled.show(0,0," ");
oled.show(0,0,obj.char+"胜利!");
clearInterval(A.t);
clearInterval(B.t);
}
function addScore(c)
{
global oled, A, B, C;
condition = 100;
if (c.char === "B") {
++B.score;
} else {
++A.score;
}
if (A.score >= condition && B.score < condition) {
isWin(A);
} else if (A.score < condition && B.score >= condition) {
isWin(B);
} else {
oled.show(0, 0, "A:"+formatNum(A.score)+" B:"+formatNum(B.score));
}
}
function showC(obj)
{
global A, B;
ca(obj);
x = Math.rand(0,15) * 8;
y = Math.rand(1,3) * 2;
while ((x === A.pos[0] && y === A.pos[1]) || (x === B.pos[0] && y === B.pos[1])) {
x = Math.rand(0,15) * 8;
y = Math.rand(1,3) * 2;
}
obj.pos[0] = x;
obj.pos[1] = y;
sa(obj);
}
showC(C);
function move(obj)
{
global C;
ca(obj);
if (obj.dir === 8) {
obj.pos[1] -= 2; //上
} else if (obj.dir === 1) {
obj.pos[0] += 8; //右
} else if (obj.dir === 4) {
obj.pos[1] += 2; //下
} else if (obj.dir === 2) {
obj.pos[0] -= 8; //左
}
if (obj.pos[0] < 0 || obj.pos[0] > 120 || obj.pos[1] < 2 || obj.pos[1] > 6) {
clearInterval(obj.t);
return false;
}
if (obj.pos[0] === C.pos[0] && obj.pos[1] === C.pos[1]) {
//吃到C了
addScore(obj);
sa(obj);
//重新计算C的位置并显示
showC(C);
}
sa(obj);
//print(SYS.heapSize()+"\n");
return true;
}
function auto(obj)
{
global C;
if (C.pos[0] === obj.pos[0] && C.pos[1] > obj.pos[1]) {
obj.dir = 4; //C在对象正下方,自动向下
} else if (C.pos[0] === obj.pos[0] && C.pos[1] < obj.pos[1]) {
obj.dir = 8; //C在对象正上方,自动向上
} else if (C.pos[0] > obj.pos[0] && C.pos[1] === obj.pos[1]) {
obj.dir = 1; //C在对象右边,自动向右
} else if (C.pos[0] < obj.pos[0] && C.pos[1] === obj.pos[1]) {
obj.dir = 2; //C在对象左边,自动向左
} else if (C.pos[0] > obj.pos[0] && C.pos[1] > obj.pos[1]) {
obj.dir = 4; //C在对象右下边,先自动向下
} else if (C.pos[0] > obj.pos[0] && C.pos[1] < obj.pos[1]) {
obj.dir = 1; //C在对象右上边,先自动向右
} else if (C.pos[0] < obj.pos[0] && C.pos[1] < obj.pos[1]) {
obj.dir = 8; //C在对象左上边,先自动向上
} else if (C.pos[0] < obj.pos[0] && C.pos[1] > obj.pos[1]) {
obj.dir = 2; //C在对象左下边,先自动向左
}
}
A.t = setInterval(function(){
global A, B;
auto(A);
if (!move(A)) {
isWin(B);
}
}, 60 );
B.t = setInterval(function(){
global A, B;
auto(B);
if (!move(B)) {
isWin(A);
}
}, 50);
ev = EV1527(9,SYS.pin("D5"),function(data){
//print(this.parse(data)+"\n");
arr = this.parse(data);
global B;
B.dir = arr[1];
});


2025-05-25 14:42:14
广告
  • pengzhenxx
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序上看,B的分数大于A的概率大一些,因为B的定时器定时时间更短


  • 无年9
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有群吗?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回esp8266吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示