当前位置: 首页 > wzjs >正文

做ui的网站各国足球世界排名

做ui的网站,各国足球世界排名,五款wordpress常用加速插件,八宝山网站建设我们设置系统的方式使得编辑碰撞检测框(即碰撞盒)并不容易。所以,我们的下一步是扩展我们的编辑器,尤其是精灵编辑器,以便我们能够在编辑器中直接编辑碰撞盒。 编辑碰撞盒 让我们加载Sprite编辑器。例如,这…

我们设置系统的方式使得编辑碰撞检测框(即碰撞盒)并不容易。所以,我们的下一步是扩展我们的编辑器,尤其是精灵编辑器,以便我们能够在编辑器中直接编辑碰撞盒。


编辑碰撞盒

让我们加载Sprite编辑器。例如,这里的碰撞检测框实际上并不是一个精灵,而是一个碰撞盒。我们想要给编辑器一些工具,让它能够识别并显示这些碰撞盒。

问题是,我们如何保存这些信息?如果我们只是在编辑器中添加一个菜单项来绘制这个碰撞盒,但当我们导出并重新加载时,这些信息就会丢失。因此,我们需要添加元数据。


元数据是什么?

元数据是关于数据的数据。在我们的案例中,我们有一堆精灵,这些精灵是要加载到游戏中的实际内容。但我们还有关于这些精灵的额外信息,这些信息对编辑器很有用,但在游戏中并不重要。这些额外信息就是元数据的完美候选者。

我们想要编辑器记住这是碰撞盒,并给我们一些好用的工具,但游戏本身并不关心这是否是碰撞盒,游戏有自己的方式来确定这些。


实现元数据

现在,让我们创建一个名为meta的数组,并在里面存放一些信息。然后,我们将这些信息写入一个文件。例如,我们可以为每个精灵创建一个对象,包含精灵的名称和是否是碰撞盒的标识。

当导出时,我们不仅要导出数据文件,还要导出元数据文件。我们可以将其命名为.mspr文件,并将所有这些文本文件放入一个单独的目录中。


编辑器和UI更新

接下来,我们需要更新编辑器,以便它能够显示和编辑这些元数据。我们将添加一个按钮,用于切换碰撞盒模式。当该模式开启时,我们编辑的就不再是精灵本身,而是与该精灵相关联的碰撞盒。

我们还需要确保在删除或创建精灵时,相应地删除或创建关联的元数据条目。


测试和调整

让我们测试一下我们的新系统。我们可以为玩家的子弹和敌人创建碰撞盒,并调整它们的大小和位置。通过编辑器,我们可以直观地看到碰撞盒是如何与精灵叠加的,从而确保它们的位置准确无误。

pico-8 cartridge // http://www.pico-8.com
version 41
__lua__
function _init()--- customize here ---#include shmup_myspr.txt#include shmup_myspr_meta.txtfile="shmup_myspr.txt"filem="shmup_myspr_meta.txt"arrname="myspr"data=mysprreload(0x0,0x0,0x2000,"cowshmup.p8")------------------------[[meta={}for x=1,#data domobj={}mobj[1]="spr "..xmobj[2]=0meta[x]=mobjend]]--debug={}msg={}_drw=draw_list_upd=update_listmenuitem(1,"export",export)curx=1cury=1scrolly=0scrollx=0poke(0x5f2d, 1)
endfunction _draw()_drw()if #msg>0 thenbgprint(msg[1].txt,64-#msg[1].txt*2,80,14)msg[1].t-=1if msg[1].t<=0 thendeli(msg,1)end  end-- debug --cursor(4,4)color(8)for txt in all(debug) doprint(txt)end
endfunction _update60()dokeys()mscroll=stat(36)_upd()
endfunction dokeys()if stat(30) thenkey=stat(31)if key=="p" thenpoke(0x5f30,1)endelsekey=nilendend
-->8
--draw
function draw_edit()-- backgroundfillp(0b11001100001100111100110000110011)rectfill(0,0,127,127,33)fillp(▒)line(63,0,63,127,13)line(0,63,127,63,13)fillp()draw_menu()-- draw spriteif selspr thenif meta[selspr][2]>0 thenwrapmspr(meta[selspr][2],63,63)msprc(selspr,63,63)elsewrapmspr(selspr,63,63)endend-- blinking dotif (time()*2)%1<0.5 thenpset(63,63,rnd({8,13,7,15}))end
endfunction draw_list()fillp(0b11001100001100111100110000110011)rectfill(0,0,127,127,33)fillp(▒)line(63,0,63,127,13)line(0,63,127,63,13)fillp()draw_menu()-- draw spritelocal mymnu=menu[cury][curx]if mymnu and mymnu.cmdy thenif meta[mymnu.cmdy][2]>0 thenwrapmspr(meta[mymnu.cmdy][2],63,63)msprc(mymnu.cmdy,63,63)elsewrapmspr(mymnu.cmdy,63,63)endendif (time()*2)%1<0.5 thenpset(63,63,rnd({8,13,7,15}))end
endfunction draw_table()cls(2)draw_menu()
endfunction draw_menu()--spr(0,0,0,16,16)if menu thenfor i=1,#menu dofor j=1,#menu[i] dolocal mymnu=menu[i][j]local c=mymnu.c or 13if i==cury and j==curx thenc=7if _upd==upd_type thenc=0endendbgprint(mymnu.w,mymnu.x+scrollx,mymnu.y+scrolly,13)   bgprint(mymnu.txt,mymnu.x+scrollx,mymnu.y+scrolly,c) endendendif _upd==upd_type thenlocal mymnu=menu[cury][curx]local txt_bef=sub(typetxt,1,typecur-1)local txt_cur=sub(typetxt,typecur,typecur)local txt_aft=sub(typetxt,typecur+1)txt_cur=txt_cur=="" and " " or txt_cur if (time()*2)%1<0.5 thentxt_cur="\^i"..txt_cur.."\^-i"endlocal txt=txt_bef..txt_cur..txt_aftbgprint(txt,mymnu.x+scrollx,mymnu.y+scrolly,7)endend-->8
--update
function update_edit()refresh_edit()if btnp(⬆️) thencury-=1endif btnp(⬇️) thencury+=1endcury=(cury-1)%#menu+1cury-=mscrollcury=mid(1,cury,#menu)if cury==1 thencurx=1if btnp(⬅️) thenselspr-=1elseif btnp(➡️) thenselspr+=1endselspr=mid(1,selspr,#data)	elseif cury==11 thencurx=1elsecurx=2endif btnp(🅾️) then_drw=draw_list_upd=update_listrefresh_list()cury=selsprcurx=1scrolly=0scrollx=0returnendif btnp(❎) thenlocal mymnu=menu[cury][curx]if mymnu.cmd=="editval" then_upd=upd_typelocal s=tostr(data[mymnu.cmdy][mymnu.cmdx])if s=="[nil]" or s==nil thens=""endtypetxt=stypecur=#typetxt+1typecall=enter_editelseif mymnu.cmd=="editcol" then_upd=upd_typelocal s=tostr(meta[selspr][2])typetxt=stypecur=#typetxt+1typecall=enter_editcolelseif mymnu.cmd=="delspr" thendeli(data,selspr)deli(meta,selspr)selspr-=1if selspr==0 thenselspr=1end_drw=draw_list_upd=update_listrefresh_list()cury=selsprcurx=1scrolly=0scrollx=0return   endend
endfunction update_list()refresh_list()if btnp(⬆️) thencury-=1endif btnp(⬇️) thencury+=1endcury=(cury-1)%#menu+1cury-=mscrollcury=mid(1,cury,#menu)curx=1local mymnu=menu[cury][curx]if mymnu.y+scrolly>110 thenscrolly-=4endif mymnu.y+scrolly<10 thenscrolly+=4endscrolly=min(0,scrolly)if mymnu.x+scrollx>110 thenscrollx-=2endif mymnu.x+scrollx<20 thenscrollx+=2endscrollx=min(0,scrollx)if btnp(❎) thenlocal mymnu=menu[cury][curx]if mymnu.cmd=="newline" thenadd(data,{0,0,0,0,0,0})add(meta,{"new",0})elseif mymnu.cmd=="editspr" thenselspr=mymnu.cmdy_upd=update_edit_drw=draw_editscrolly=0scrollx=0refresh_edit()cury=1endend
endfunction update_table()refresh_table()if btnp(⬆️) thencury-=1endif btnp(⬇️) thencury+=1endcury=(cury-1)%#menu+1cury-=mscrollcury=mid(1,cury,#menu)if btnp(⬅️) thencurx-=1endif btnp(➡️) thencurx+=1endif cury<#menu thencurx=(curx-2)%(#menu[cury]-1)+2elsecurx=1endlocal mymnu=menu[cury][curx]if mymnu.y+scrolly>110 thenscrolly-=4endif mymnu.y+scrolly<10 thenscrolly+=4endscrolly=min(0,scrolly)if mymnu.x+scrollx>110 thenscrollx-=2endif mymnu.x+scrollx<20 thenscrollx+=2endscrollx=min(0,scrollx)if btnp(❎) thenlocal mymnu=menu[cury][curx]if mymnu.cmd=="edit" then_upd=upd_typetypetxt=tostr(mymnu.txt)typecur=#typetxt+1typecall=enter_tableelseif mymnu.cmd=="newline" thenadd(data,{0})  elseif mymnu.cmd=="newcell" thenadd(data[mymnu.cmdy],0)endend
endfunction upd_type()if key thenif key=="\r" then-- enter   poke(0x5f30,1)typecall()returnelseif key=="\b" then--backspaceif typecur>1 thenif typecur>#typetxt thentypetxt=sub(typetxt,1,#typetxt-1)elselocal txt_bef=sub(typetxt,1,typecur-2)local txt_aft=sub(typetxt,typecur)typetxt=txt_bef..txt_aftendtypecur-=1endelseif typecur>#typetxt thentypetxt..=keyelselocal txt_bef=sub(typetxt,1,typecur-1)local txt_aft=sub(typetxt,typecur)typetxt=txt_bef..key..txt_aftendtypecur+=1endendif btnp(⬅️) thentypecur-=1endif btnp(➡️) thentypecur+=1endtypecur=mid(1,typecur,#typetxt+1)
end
-->8
--toolsfunction bgprint(txt,x,y,c)print("\#0"..txt,x,y,c)
endfunction split2d(s)local arr=split(s,"|",false)for k, v in pairs(arr) doarr[k] = split(v)endreturn arr
endfunction wrapmspr(si,sx,sy)if si==nil thenbgprint("[nil]",sx-5*2+1,sy-2,14)returnendif myspr[si]==nil thenbgprint("["..si.."]",sx-5*2+1,sy-2,14)returnendlocal ms=myspr[si]if ms[8] then--check for loopsif ms[8]==si thenbgprint("[loop]",sx-6*2+1,sy-2,14)returnelseif checkloop(ms,10) thenbgprint("[loop]",sx-6*2+1,sy-2,14)return   endendendmspr(si,sx,sy)
endfunction checkloop(ms,depth)depth-=1if depth<=0 thenreturn trueendif ms==nil thenreturn trueendif ms[8] thenreturn checkloop(myspr[ms[8]],depth)elsereturn falseend
endfunction mspr(si,sx,sy)local ms=myspr[si]sspr(ms[1],ms[2],ms[3],ms[4],sx-ms[5],sy-ms[6],ms[3],ms[4],ms[7]==1)if ms[7]==2 thensspr(ms[1],ms[2],ms[3],ms[4],sx-ms[5]+ms[3],sy-ms[6],ms[3],ms[4],true)endif ms[8] thenmspr(ms[8],sx,sy)end
endfunction msprc(si,sx,sy)local _x,_y,_w,_h,_ox,_oy,_fx,_nx=unpack(myspr[si])if _fx==2 then_w*=2end--sspr(_x,_y,_w,_h,sx-_ox,sy-_oy,_w,_h,_fx==1)rect(sx-_ox,sy-_oy,sx-_ox+_w-1,sy-_oy+_h-1,rnd({8,14,15}))
endfunction spacejam(n)local ret=""for i=1,n doret..=" "endreturn ret
end
-->8
--i/o
function export()local s=arrname.."=split2d\""for i=1,#data doif i>1 thens..="|"endfor j=1,#data[i] doif j>1 thens..=","ends..=data[i][j]endends..="\""printh(s,file,true)local s="meta=split2d\""for i=1,#meta doif i>1 thens..="|"endfor j=1,#meta[i] doif j>1 thens..=","ends..=meta[i][j]endends..="\""printh(s,filem,true)add(msg,{txt="exported!",t=120})--debug[1]="exported!"
end
-->8
--ui
function refresh_edit()menu={}add(menu,{{txt="< "..selspr.." "..meta[selspr][1].." >",w="",cmd="sprhead",x=2,y=2}})local lab={"  x:","  y:","wid:","hgt:"," ox:"," oy:"," fx:","nxt:"}for i=1,8 dolocal s=tostr(data[selspr][i])if s==nil thens="[nil]"endadd(menu,{{txt=lab[i],w="    ",x=2,y=3+i*7},{txt=s,w=spacejam(#s),cmd="editval",cmdy=selspr,cmdx=i,x=2+16,y=3+i*7}}) endlocal coltxt=meta[selspr][2]==0 and "off" or tostr(meta[selspr][2])add(menu,{{txt="col:",w=spacejam(4),x=2,y=4+9*7},{txt=coltxt,w=spacejam(#coltxt),cmd="editcol",cmdy=selspr,x=19,y=4+9*7}})add(menu,{{txt="delete",w="",cmd="delspr",x=2,y=5+10*7}})
endfunction refresh_list()menu={}for i=1,#data dolocal lne={}local linemax=#data[i]if i==cury thenlinemax+=1  endadd(lne,{txt=i.." "..meta[i][1],w="",cmd="editspr",cmdy=i,x=2,y=-4+6*i})add(menu,lne)endadd(menu,{{txt=" + ",w="   ",cmd="newline",x=2,y=-4+6*(#data+1)+2, }})
endfunction refresh_table()menu={}for i=1,#data dolocal lne={}local linemax=#data[i]if i==cury thenlinemax+=1  endadd(lne,{txt=i,w="   ",cmd="",x=4,y=-4+8*i,c=2  })for j=1,linemax doif j==#data[i]+1 thenadd(lne,{txt="+",w=" ",cmd="newcell",cmdy=i,x=-10+14*(j+1),y=-4+8*i, })elseadd(lne,{txt=data[i][j],cmd="edit",cmdx=j,cmdy=i,x=-10+14*(j+1),y=-4+8*i,w="   "})endendadd(menu,lne)endadd(menu,{{txt=" + ",w="   ",cmd="newline",x=4,y=-4+8*(#data+1), }})
endfunction enter_table()local mymnu=menu[cury][curx]local typeval=tonum(typetxt)if typeval==nil thenif mymnu.cmdx==#data[mymnu.cmdy] and typetxt=="" then--delete celldeli(data[mymnu.cmdy],mymnu.cmdx)if mymnu.cmdx==1 thendeli(data,mymnu.cmdy)end_upd=update_tablereturnend  typeval=0enddata[mymnu.cmdy][mymnu.cmdx]=typeval_upd=update_tablerefresh_table()
endfunction enter_edit()local mymnu=menu[cury][curx]local typeval=tonum(typetxt)if mymnu.cmdx==8 thenif typeval!=nil thenif data[mymnu.cmdy][7]==nil thendata[mymnu.cmdy][7]=0endendendif typeval==nil thenif mymnu.cmdx>=7 and mymnu.cmdx==#data[mymnu.cmdy] thendeli(data[mymnu.cmdy],mymnu.cmdx)elsedata[mymnu.cmdy][mymnu.cmdx]=0endelsedata[mymnu.cmdy][mymnu.cmdx]=typevalend _upd=update_editrefresh_edit()
endfunction enter_editcol()local mymnu=menu[cury][curx]local typeval=tonum(typetxt)if typeval==nil or typeval<1 thenmeta[selspr][2]=0elsemeta[selspr][2]=typevalend_upd=update_editrefresh_edit()
end
__gfx__
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__map__
0000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

http://www.dtcms.com/wzjs/18073.html

相关文章:

  • 关键字查询我的网站怎么做惠州seo招聘
  • 哪个网站可以做兼职ppt模板找客源免费用哪个软件好
  • 江苏交通运输厅网站建设济南百度竞价开户
  • 衡阳县专业做淘宝网站网站建设选亿企网络
  • 什么网站做婚礼请柬seo搜索引擎优化方案
  • app手机端电子商务网站功能站长之家 站长工具
  • ASP做旅游网站代码网页制作图片
  • 集团网站手机版营销渠道名词解释
  • 企业网站建设 网络服务潍坊关键词优化软件
  • 焦作网站建设公司排名关键词密度
  • 展示型企业网站设计方案优化大师电脑版
  • 外贸公司没网站 怎么做业务seo网站优化是什么
  • 毕业设计做网站网站建设
  • 做废钢那个网站好短视频代运营合作方案
  • 做外贸网站一定要会英语吗百度seo怎么关闭
  • 松江营销型网站建设公司大连seo外包平台
  • 有哪些育儿类网站做的比较好淄博头条新闻今天
  • 连云港北京网站建设软文写作兼职
  • jquery 打开新网站地推怎么做最有效
  • 有企业信息的网站高端网站建设南宁
  • 网站 可以做无形资产吗厦门seo排名优化公司
  • 租房网站开发报告外包接单平台
  • 58同城网站建设目的企业网站建设公司
  • 广州小型网站建设公司网络营销工资一般多少
  • 个人网站怎么做口碑百度seo优化是做什么的
  • 在那里能找到网站zac seo博客
  • 韩国世界杯出线条件东莞关键词seo优化
  • 扬州网官方微博百度优化服务
  • 湘潭本地的网站建设公司公众号怎么推广和引流
  • 网站建设go济南百度公司