魔兽地图编辑器吧 关注:64,999贴子:3,835,909
  • 3回复贴,共1

第一届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
      收起回复
        本人第一个给出第一道赛题的参考答案,抛砖引玉!
        ********************************************************************************************************
        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
        回复