BBasic-Miku感谢祭倒计时2013

Miku总能激发'创作的灵感!
于是乎、
渐渐出构建基于BBaisc语言的Miku倒计时 。

语言BBaisc。
UI使用了Metro的磁块UI。
功能输入日期将计算出当前日期距Miku演唱会的天数。
背景使用标准的24位GB颜色。

设计构思:



源码草图:





Dim homepic,surepic,nopic,backpic,k,penx,peny,uppic,downpic,wait,savepic,happypic,loada,loadb,hadpic,modea,modeb,loada$,loadb$,date,day
wait=1
modea=0
modeb=0
loada$=":-( Miku香港演唱会举办完了…"
loadb$=":-( Miku台湾演唱会举办完了…"
setbkmode(transparent)
'------图片读取------
homepic=loadres("MikuLoad.lib",1)
surepic=loadres("MikuLoad.lib",2)
nopic=loadres("MikuLoad.lib",3)
backpic=loadres("MikuLoad.lib",4)
uppic=loadres("MikuLoad.lib",5)
downpic=loadres("MikuLoad.lib",6)
savepic=loadres("MikuLoad.lib",7)
happypic=loadres("MikuLoad.lib",8)
hadpic=loadres("MikuLoad.lib",9)
fillpage(-1,0,0,240,320,184125000)
showpic(-1,homepic,0,0,240,320,0,0,1)
open "MikuLoad.sav" for binary as #1
get #1,date
get #1,day
if lof(1)=0 then
  date=1
  day=1
end if
close #1
waitkey()
cls
001 modea=0
modeb=0
fillpage(-1,0,0,240,320,184125000)
fillpage(-1,10,20,190,70,000180000)
fillpage(-1,10,200,90,70,000180000)
fillpage(-1,110,200,90,70,000180000)
fillpage(-1,10,110,90,70,000180000)
font(font_16hei)
pixlocate(160,70)
print"开始"
pixlocate(60,160)
print"计算"
pixlocate(60,250)
print"概况"
pixlocate(160,250)
print"退出"
while wait>=0
k=waitkey()
penx=getpenposx(k)
peny=getpenposy(k)
if penx>=10 and penx<=200 then
  if peny>=20 and peny<=90 then
    goto 002
  end if
end if
if penx>=10 and penx<=100 then
  if peny>=110 and peny<=180 then
    goto 003
  else if peny>=200 and peny<=270 then
    goto 004
  end if
end if
if penx>=110 and penx<=200 then
  if peny>=200 and peny<=270 then
    end
  end if
end if
wend
'------选择日期界面-------
002 cls
fillpage(-1,0,0,240,320,184125000)
fillpage(-1,140,20,100,50,000180000)
showpic(-1,uppic,40,110,60,30,0,0,1)
showpic(-1,uppic,140,110,60,30,0,0,1)
showpic(-1,downpic,40,190,60,30,0,0,1)
showpic(-1,downpic,140,190,60,30,0,0,1)
'showpic(-1,surepic,20,270,80,30,0,0,1)
showpic(-1,backpic,140,270,80,30,0,0,1)
font(font_16hei)
pixlocate(175,48)
print"选择日期"
font(font_24hei)
pixlocate(58,153)
print date
pixlocate(158,153)
print day
pixlocate(85,153)
print"月"
pixlocate(185,153)
print"日"
pixlocate(0,85)
print"2012年"
while wait>=0
k=waitkey()
penx=getpenposx(k)
peny=getpenposy(k)
if penx>=40 and penx<=100 then
  if peny>=110 and peny<=140 then
    date=date+1
     if date>12 then
        date=1
     end if
     fillpage(-1,58,153,24,24,184125000)
     pixlocate(58,153)
     print date
  else if peny>=190 and peny<=220 then
    date=date-1
    if date<1 then
      date=12      
    end if
    fillpage(-1,58,153,24,24,184125000)
    pixlocate(58,153)
    print date
  end if
else if penx>=140 and penx<=200 then
  if peny>=110 and peny<=140 then
    day=day+1
    if date=2 then
      if day>29 then 
        day=1
      end if
    else if date=4 then
      if day>30 then
        day=1
      end if
    else if date=6 then
      if day>30 then
        day=1
      end if
    else if date=9 then  
      if day>30 then
        day=1 
      end if
    else if date=11 then
      if day>30 then
        day=1
      end if
    else 
      if day>31 then
        day=1
      end if
    end if
  fillpage(-1,158,153,24,24,184125000)
  pixlocate(158,153)
  print day
else if peny>=190 and peny<=220 then
  day=day-1
    if day<1 then
      day=1
    end if
  fillpage(-1,158,153,24,24,184125000)
  pixlocate(158,153)
  print day
end if
if penx>=20 and penx<=100 then
  if peny>=270 and peny<=300 then
    goto 003
  end if
else if penx>=140 and penx<=220 then
  if peny>=270 and peny<=300 then
    goto 001
  end if
end if
end if
wend
003 cls
if date=1 then
  loada=31-day+244
  loadb=loada+4
else if date=2 then
  loada=29-day+215
  loadb=loada+4
else if date=3 then
  loada=31-day+184
  loadb=loada+4
else if date=4 then
  loada=30-day+154
  loadb=loada+4
else if date=5 then
  loada=31-day+123
  loadb=loada+4
else if date=6 then
  loada=30-day+93
  loadb=loada+4
else if date=7 then
  loada=31-day+62    
  loadb=loada+4
else if date=8 then
  loada=31-day+31
  loadb=loada+4
else if date=9 then
  loada=30-day+1
  loadb=loada+4
else if date=10 then
  if day<=2 then
  loada=2-day
  loadb=loada+4
  else if day>2 and day<=7 then
    modea=1
    loada=0
    loadb=6-day
  else if day>7 then
    modea=1
    modeb=1
  end if
else if date>10 then
  modea=1
  modeb=1
  loada=0
  loadb=0
end if
fillpage(-1,0,0,240,320,184125000)
fillpage(-1,140,20,100,50,000180000)
showpic(-1,savepic,140,270,80,30,0,0,1)
'showpic(-1,backpic,140,270,80,30,0,0,1)
font(font_16hei)
pixlocate(190,48)
print"倒计时"
pixlocate(70,130)
print"今天是"+date+"月"+day+"日。"
showpic(-1,happypic,0,90,60,60,0,0,1)
pixlocate(0,175)
print"距Miku香港演唱会(10月2日)还有:"
pixlocate(0,225)
print"距Miku台湾演唱会(10月6日)还有:"
font(font_24hei)
pixlocate(175,191)
print loada
pixlocate(175,241)
print loadb
font(font_16hei)
pixlocate(215,199)
print"天。"
pixlocate(215,249)
print"天。"
if modea=1 then
  fillpage(-1,0,174,240,42,184125000)
  pixlocate(0,175)
  print loada$
end if
if modeb=1 then
  fillpage(-1,0,224,240,42,184125000)
  pixlocate(0,225)
  print loadb$
end if
while wait>=0
k=waitkey()
penx=getpenposx(k)
peny=getpenposy(k)   
if penx>=140 and penx<=220 then
  if peny>=270 and peny<=300 then 
    open "MikuLoad.sav" for binary as #2 
    put #2,date
    put #2,day
    close #2 
    fillpage(-1,140,270,80,30,184125000)
    modea=0
    modeb=0
    showpic(-1,backpic,140,270,80,30,0,0,1)
    showpic(-1,hadpic,140,20,100,50,0,0,1)
    waitkey
    goto 001
  end if
end if
wend
'--------简介界面---------
004 cls
fillpage(-1,0,0,240,320,184125000)
print"初音Miku香港&台湾公演日MIKUPA"
font(font_12hei)
print""
print":-) 香港公演"
print"公演日:"
print"2012年10月2日"
print"会场:"
print"KITEC Star Hall (www.kitec.com.hk)"
print"开场/开演时间:"
print"昼公演:14:00/15:00"
print"夜公演:19:00/20:00"
print
print":-) 台湾公演"
print"公演日:"
print"2012年10月6日"
print"会场:"
print"Taipeishow台北展演二馆"
print"http://www.taipeishow.com.tw/"
print"开场/开演时间:"
print"昼公演:13:00/14:00"
print"夜公演:18:00/19:00"
print
print"协力:"
print"SEGA/Crypton Future Media,Inc"
print"Graphics by SEGA"
print"Organized by MIKUPA Overseas Partnership"
waitkey
goto 001        

运行结果:
         

@ Mayuko





转载于:https://www.cnblogs.com/mayuko/p/4567588.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个标题,相信大家已经期待很久了。。 经过一个寒假的努力,终于完成了梦寐以求的小机专用的BBasic编译器。 配合我的小机版连接器,完全可以在小机上生成BIN文件,从而实现梦寐以求的小机编程。 再加上尘曲写的那个小机LibMaker,天狼星的MapEditor,可以完整地构成了小机专用的开发环境。 现在说明开发包里各程序的的操作方法: Name: BBCompiler.cvm Function: 编译你所写的源程序 Usage: 1.用小机上的记事本写下自己的源程序,并将其改名为“Base.txt”,无需更改目录。 2.打开cvm虚拟机,运行BBCompiler.cvm。你将看到选择界面,此时按确认键开始编译,编译完成,将在A盘Source目录下生成Test.Txt为汇编文件。 3.编译过程中若出现错误,请用电子图书打开A盘Source目录下的Reports.Txt,根据提示修改程序中的错误。 需要注意的: 1. 修改了出现在原编译器上的Put,Seek语句不支持逗号后接常量的Bug. 2.数组的各下维间必须用逗号来分隔。 3.由于生成了Temp文件,以致无法正确定位行号,各位请原谅。 4.字符串常量是直接保存到汇编文件中的,不会改变其大小写,因此你可以放心地插入汇编。 5.支持了十六进制,八进制,二进制常数,表示法为&H001(十六进制数),&O44(八进制),&B00101(二进制)。 6.支持两种流程控制语句,break(跳出该层循环)和continue(继续本次循环)。 7.一行语句总字节大小不得超过256B。 8.除INPUT语句外,(我想这个在彩屏机上也没有意义),其他语句均支持。 Name: BBLinker.cvm Function: 连接汇编码 Usage: 请看我以前的帖子,这里不再赘述。 需要注意的: 请看我以前的帖子,这里不再赘述。 Name: LibMaker.cvm Function: 创建资源文件 Usage: 1.在A盘根目录下创建一个文件夹,名字可以随意取。 2.将资源图片(*.Bmp)全部拷贝到该文件夹下,并按资源ID顺序重命名(如:1,2,3..)。 3.启动cvm虚拟机,运行LibMaker.cvm。 4.按提示输入文件夹名和资源图片数,开始生成资源文件。 5.生成完毕,将在该文件夹下创建一个与该文件夹同名的Lib文件,这就是你要的资源文件了。 需要注意的: 若不知道如何输入请参看我以前的帖子。 在此图示一下操作步骤: 编译->连接->将A:\Source目录下的Test.Bin改为你想取的名字->拷贝到BBasic文件夹下[创 建资源文件->拷贝到BBasic文件夹下]->启动BB虚拟机,调试程序。 其中[]中的内容可省略。 如果还有不懂的请跟帖或在QQ上问我。 注意一下: 1.程序均为cvm语言编写,cvm虚拟机请自行下载并安装。 2.未经原作者同意,不可随意对源码进行篡改或转载,也不允许对程序本身进行任何反向操作。 3.如有Bug请通知原作者本人。 谢谢合作。 小机编译器,连接器,LibMaker均在此,请自行下载并解压到小机根目录下以安装 下载信息 [文件大小:18.3 KB 下载次数:294] 点击浏览该文件:bbtools.rar 再此希望大家能够支持我。 谢谢。 Copyright(C)BBK club All rights reserved 2011
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值