魔兽地图编辑器吧 关注:64,999贴子:3,835,865

第一届WE吧个人JASS编程大赛——发起人Patatochips

只看楼主收藏回复

近日设计开发一些有很意思的地图,遇到很多与算法相关的问题。发现确实很有趣味性、知识性和教育性。“独乐乐不如众乐乐”,为了促进中国广大魔兽争霸爱好者和世界编辑器爱好者对JASS程序语言的认知深度和制图水平。本人特以个人名义举办WE吧个人JASS编程大赛(WE Bar JASS Pragramming Tournament)。
本赛事为连续性不定期赛事,开赛时间为赛题公布之时刻。
第一届WE吧个人JASS编程大赛暨今日(2014年9月9日)开始,直到下一赛题公布,进入下一届赛事。
下面介绍一下初步的赛事系统:
1、比赛规则
凡WE吧吧友已自动加入本赛事,可以弃权;非本吧吧友需先成为WE吧吧友方可参赛。
将参赛程序以回帖形式提交。回帖注明:参与第X届WE吧个人JASS编程大赛字样。
参赛帖楼层不得被插,否则予以删帖。
与本赛事无关回帖,一律删除。
需要讨论话题的本人另开一贴:第一届WE吧个人JASS编程大赛(讨论区),可以在此帖无限灌水。
2、参赛作品要求
1)严格符合JASS语法规则,在编辑器通过后复制粘贴修饰后回帖。
2)多使用注释,利于评阅者阅读。
3)尽可能优化程序。
2、赛题征集
每届赛事会提出若干(1~3)个赛题。
赛题来自与本人或由吧友或相关程序爱好者提供。可能来自于游戏设计、现实生活、历史故事等。赛题不宜过度复杂,不宜过度简单。可以以魔兽游戏为主题也可以单纯以抽象算法为主题。
赛题征集另开一贴:第X届WE吧个人JASS编程大赛(赛题征集)
3、作品评定
1)每届赛事每个赛题单独评定,设第一名、第二名和第三名和优秀作品。无参赛作品或参赛作品不合格,不予等级评定。宁缺勿滥。
2)评定人员由本人和WE吧熟悉JASS程序的吧友共同组建。待日后逐步成立壮大。
第一届由本人参考吧友意见评定。日后在商议后续比赛事宜。
评定结果另开一贴:第X届WE吧个人JASS编程大赛(比赛结果)
4、比赛奖品
1)本赛事处于起步阶段,另本人也无力支付,因此第一届WE吧个人JASS程序编程大赛不设任何奖品,只颁发对应赛事头衔。
2)优秀作品将被收录,可能有机会出版面世。所得稿酬分配给联系相关人员。
以上即为第一届WE吧JASS程序编程大赛的初步介绍。
至此第一届WE吧JASS程序编程大赛至此正式启动!!!
下面公布第一届第一届WE吧JASS程序编程大赛赛题:
1、变色文字
"Welcome to World of Warcraft"
上述字符长度28,初始颜色为蓝色(|cff0000ff|r)。
从第一个字母W开始,每隔0.5秒将下一个字母变换为绿色(|cff00ff00|r),同时恢复上一个字母颜色,直到抵达最后一个字母t后,按同样方式改变上一个字母颜色直到抵达第一个字母。
赛题要求:必须实现上述主体功能。
2、旋转文字
在屏幕接近正中央位置按如下方式均布旋转显示上述字符串"Welcome to World of Warcraft"。
圆圈圈半径0.8(屏幕尺度),文字旋转速度,每3秒旋转一圈。

3、魔幻空间
将地图空间分割成10X10X10=1000块。随机选择一个空间作为起始点,向不同方向(上下左右前后)延伸,不得碰触已有空间,让计算机自行运行直至无法继续延伸空间结束程序。每延伸一步显示空间数量和当前空间坐标。程序结束后,显示无法继续延伸空间,3秒后自动退出游戏。
该赛题起源于贪吃蛇游戏,但是放在3D空间,并且是随机控制的。
提示:1、空间采用方盒子模型的Z轴可破坏物创建
2、空间采用方盒子模型的单位,改变x、y和飞行高度。
祝各位吧友积极参与,开动脑筋!
祝第一届WE吧JASS程序编程大赛顺利!
2014年9月9日
patatochips


IP属地:湖北1楼2014-09-09 21:18回复
    尽量不要抄袭!
    作品雷同者按发表时间顺序录取!


    IP属地:湖北8楼2014-09-09 21:36
    回复
      赛题2文字可以按顺时针或逆时针旋转。


      IP属地:湖北10楼2014-09-09 21:40
      收起回复
        题目脱离实践毫无意义


        IP属地:广东22楼2014-09-09 23:13
        收起回复
          本人第一个给出第一道赛题的参考答案,抛砖引玉!
          ********************************************************************************************************
          globals
          string udg_s = "Welcome to World of Warcraft"
          integer udg_i = -1
          boolean udg_order = true //记录颜色改变顺序
          endglobals
          ********************************************************************************************************
          function Int15ToF takes integer i returns string //15内整数转16进制字符
          local string s = "0123456789abcdef"
          local integer j = 0
          if i < 0 or i> 15then
          return "0"
          endif
          loop
          if i == j then
          return SubString(s,j,j+1)
          endif
          set j = j+1
          exitwhen j == 16
          endloop
          endfunction
          ********************************************************************************************************
          function Int255ToFF takes integer i returns string //255内整数转256进制字符串
          local string s ="00"
          local integer j = 0
          local integer k = 0
          if i<0 then
          set i = 0
          endif
          if i>255 then
          set i = 255
          endif
          set j = i/16
          set k = i-j*16
          return Int15ToF(j)+Int15ToF(k)
          endfunction
          ******************************************************************************************************
          //设置字符串颜色
          function SetStringColor takes string s,integer r, integer g, integer b returns string
          local string str = Int255ToFF(r)+Int255ToFF(g)+Int255ToFF(b)
          return "|cff"+str+s+"|r"
          endfunction
          *******************************************************************************************************
          //每隔0.5秒改变对应字符颜色为绿色
          function ChangTextColorA takes nothing returns nothing
          local string s = ""
          if udg_order then
          set udg_i = udg_i+1
          set s = SubString(udg_s,udg_i,udg_i+1)
          set s = SetStringColor(s,0,255,0)
          set s = SetStringColor(SubString(udg_s,0,udg_i),0,0,255)+s+SetStringColor(SubString(udg_s,udg_i+1,28),0,0,255)
          if udg_i == 27 then
          set udg_order = false
          set udg_i =28
          endif
          else
          set s = SubString(udg_s,udg_i-1,udg_i)
          set s = SetStringColor(s,0,255,0)
          set s = SetStringColor(SubString(udg_s,0,udg_i-1),0,0,255)+s+SetStringColor(SubString(udg_s,udg_i,28),0,0,255)
          set udg_i = udg_i -1
          if udg_i == 0 then
          set udg_order = true
          set udg_i =-1
          endif
          endif
          call ClearTextMessages()
          call DisplayTextToPlayer(GetLocalPlayer(),0,0,s)
          endfunction
          ********************************************************************************************************
          //显示原始字符串,并开启变色功能。
          function ChangeTextColor takes nothing returns nothing
          local timer t = CreateTimer()
          local string s = SetStringColor(udg_s,0,0,255)
          call DisplayTextToPlayer(GetLocalPlayer(),0,0,s)
          call TimerStart(t,0.5,true,function ChangTextColorA)
          endfunction
          ********************************************************************************************************
          在main函数中调用ChangeTextColor即可验证。


          IP属地:湖北28楼2014-09-10 00:17
          回复
            好腻害得样子,反正我去不会j
               --睡觉觉,


            IP属地:广东来自Android客户端29楼2014-09-10 00:19
            收起回复
              1.str[0]="|cff0000ffwelcome|r"
              str[1]="|cff0000ffw|r|cff00ff00e|r|cff0000fflcome|r"
              ...
              str[x]=xxxxx
              timerstart(1,0.5,true,function(){ /*display from0-x and then x-0*/ })
              2.str[x][y]=str[100*x+y]
              void cls()
              { loop i=0-20 bjdebugmsg("") }
              timerstart(t,1,true,function(){ /* print char by its screen offset */ cls(); })
              3. meaningless
              a tournament of no significance...poor....


              30楼2014-09-10 19:28
              收起回复
                厉害,不过我不懂


                IP属地:广东来自Android客户端31楼2014-09-10 21:49
                回复
                  第一题有空做个


                  IP属地:上海来自iPhone客户端33楼2014-09-10 22:20
                  收起回复
                    脱离实践的题目毫无意义


                    IP属地:北京来自Android客户端34楼2014-09-10 22:32
                    回复
                      →_→突然想学j了


                      IP属地:安徽来自Android客户端36楼2014-09-11 04:11
                      回复
                        说得好,但管我吊事


                        来自Android客户端37楼2014-09-11 07:00
                        回复
                          围观。。。


                          IP属地:浙江来自Android客户端38楼2014-09-11 10:12
                          回复
                            围观


                            IP属地:四川来自Android客户端39楼2014-09-11 11:08
                            回复
                              围观


                              IP属地:四川来自Android客户端40楼2014-09-11 11:09
                              回复