使用最短数量的代码制作Matrix Digital Rain [关闭]


21

规则:

  • 您选择的任何语言(标准库)。
  • 输出显示在终端Windows命令处理器中,或您喜欢的任何其他方式
    (宽度缓冲区= 80)
  • ASCII字符就足够了。(可以添加Unicode)
  • 在启动时不应该填满整个屏幕(看起来就像下雨了,du!)。
  • 颜色获得加分(+5)。
  • 效果:随机的角色,跌落幅度不同,会定期再生。

点数:(更新)

  • +32点开始。
  • 第** 1024 ***个字节之后的代码中的每个字节(非字符)均为-1点。
  • 点可以达到零和负。
  • 注意:使用多字节字符的语言应计算字节而不是字符。
  • 每个新效果加+5。(未由其他人发布)
  • 以下任何一项效果,+ 15
    1. 风(向侧面吹字符)
    2. 号码匹配(用户输入,例如:90210):
      号码随机位于矩阵内
      在此处输入图片说明
    3. 声音
    4. 加密的消息(用户输入):
      字符表示秘密的加密消息
    5. Galaga模式:
      发射^以销毁角色
      在此处输入图片说明

记分板:

┌-----┬------------┬------------┬-------------┬---------------┬--------------┐
| pos |    name    |    type    |    bytes    |    effects    |    points  ^ |
|-----|------------|------------|-------------|---------------|--------------|
|1    |nitro2k01   |QBasic      |913          |Colours        |+57           |
|     |            |            |             |Colour Fade    |              |
|     |            |            |             |Sound (+15)    |              |
|-----|------------|------------|-------------|---------------|--------------|
|2    |squeamish   |HTML, Java- |1024         |Colours        |+47           |
|     |ossifrage   |Script, CSS |             |Transition     |              |
|     |            |            |             |Size Variation |              |
|-----|------------|------------|-------------|---------------|--------------|
|3    |manatwork   |Ruby        |374          |Colours        |+47           |
|     |            |            |             |Actual Words   |              |
|     |            |            |             |Character -    |              |
|     |            |            |             |      Disperse |              |
|-----|------------|------------|-------------|---------------|--------------|
|4    |plg         |Bash        |1024         |Colours        |+42           |
|     |            |            |             |Random Pause   |              |
|-----|------------|------------|-------------|---------------|--------------|
|5    |Timtech     |TI-84 calc  |120          |Umbrella       |+42           |
|     |            |            |             |Run Inside     |              |
|-----|------------|------------|-------------|---------------|--------------|
|6    |Samuel Cook |JavaScript  |830          |Colours        |+42           |
|     |            |            |             |Transition     |              |
└-----┴------------┴------------┴-------------┴---------------┴--------------┘

注意: 记分板将/可以在发布有效答案后被任何人更新。不要超过前十名。为您的代码添加更多效果并超越自己的得分!
清除初始屏幕,清理,错误,第三方库等将不计入要点。请记住包括有关否的详细信息。使用的字节数以及语言或程序的名称。

Neo:您想告诉我什么?我可以躲避子弹吗?

Morpheus:不,Neo。我想告诉您,当您准备就绪时,就不必这样做了。


那图书馆呢?
Vereos 2014年

根据需要包括或导入或需要尽可能多的库(标准库)!
Renae Lider 2014年

如果代码少于250个字符,您会加分吗?(我有一个很短的解决方案,但没有很多功能)
ThinkChaos 2014年

您将不需要它;您仍然会有+32分!很有可能很多人会超过限制并开始下降点,从而使短代码上升到记分板上。(此外,添加更多规则和要点将使事情复杂化)
Renae Lider 2014年

好吧,我会附带一个高尔夫版本只是为了好玩!
ThinkChaos 2014年

Answers:


18

HTML,Javascript和CSS:1024个字节,47个点

矩阵雨演示

特征:

  • 使用Unicode字符(不过不要认为这会得分)
  • 绘制时,轨迹从亮绿色逐渐消失为深绿色(*)
  • 绘图完成后,轨迹也从深绿色逐渐淡入黑色(*)
  • 每个跟踪中的随机文本大小(*)
  • 每次绘制轨迹时,都会随机重新定位和调整大小

(*)我将为每一项要求+5分,但如果您不同意,请告诉我:-)

演示:

http://ruletheweb.co.uk/matrix.html

源代码:

恰好1024个字节。恐怕有点丑陋。

<head><style>*{margin:0;padding:0;line-height:1;overflow:hidden;}div{width:1em;position:absolute;}</style><script>
w=window;n=w.innerWidth;m=w.innerHeight;d=document;q="px";function z(a,b){return Math.floor(Math.random()*(b-a)+a)}f=" 0123456789";for(i=0;i<45;i++)f+=String.fromCharCode(i+65393);function g(){for(i=0;i<90;i++){r=d.createElement("div");for(j=z(20,50);j;j--){x=d.createElement("pre");y=d.createTextNode(f[z(0,56)]);x.appendChild(y);x.style.opacity=0;r.appendChild(x)}r.id="r"+i;r.t=z(-99,0);with(r.style){left=z(0,n)+q;top=z(-m,0)+q;fontSize=z(10,25)+q}d.body.appendChild(r);setInterval("u("+i+")",z(60,120))}}function u(j){e=d.getElementById("r"+j);c=e.childNodes;t=e.t+1;if((v=t-c.length-50)>0){if((e.style.opacity=1-v/32)==0){for(f in c)if(c[f].style)c[f].style.opacity=0;with(e.style){left=z(0,n)+q;top=z(-m/2,m/2)+q;opacity=1}t=-50}}e.t=t;if(t<0||t>c.length+12)return;for(f=t;f&&f>t-12;f--){s=1-(t-f)/16;if(f<c.length&&c[f].style){c[f].style.opacity=s;}}}
</script><body text=#0f0 bgcolor=#000 onload=g()>

2
屏幕截图看起来不错,但是却浪费了我的资源。从我+1
塞缪尔·库克2014年

真酷!我可能会偷走您的unicode字符:) +1
ThinkChaos 2014年

1
UglifyJS可以从JavaScript源代码中删除17个字符。并不是真的很重要,因为这不是代码高尔夫球(而是最多1024个字符的挑战)。
Konrad Borowski 2014年

这是迄今为止在Google搜索结果的前两页中发现的最好的版本。我只是真的希望您有空间实际删除要添加的某些节点:)确实杀死了我的计算机,无法打开它
RustyToms 17/02/23

10

重击

1024字节(包括注释)

COL=80
ROW=$(tput lines)

cleanup() {
  wait # wait for background jobs (the drops)
  # clear; move cursor to (1,1); show cursor
  # reset color
  printf '\033[2J\033[1;1H\033[?25h\033[0;0m'
}

drop() { # $1=column ; $2=row to end on ; $3 = drop size (ranges from 5 to 15)
  for ((r=1; r<$2+$3+1; r++)); do
    # if before drop's end point : print lowest char in white
    [ $r -lt $2 ] && printf "\033[$r;$1H\033[0;0m\u$[RANDOM % 59 + 21]"

    # if before or on drop's end point : replace older white char with a green one
    [ $r -le $2 ] && printf "\033[$[r-1];$1H\033[0;32m\u$[RANDOM % 59 + 21]"

    # if drop's longer than it's size : erase last char
    [ $r -gt $3 ] && printf "\033[$[r-$3];$1H "

    # wait before moving drop down
    sleep .1
  done
}

# cleanup on exit
trap cleanup EXIT
# clear screen; hide cursor
printf '\033[2J\033[?25l'

# loop with delay
while sleep .1; do
  # start a drop in background : column; ending row; size
  drop $[RANDOM % COL] $[RANDOM % ROW + ROW/3] $[RANDOM % 10 + 5] &
done

新效果:

  • 一切(第一次进入);)
  • 滴将在屏幕上随机停止
  • 很酷的色彩效果:最后一个字符是白色,其他字符是绿色
  • 随机字符和转义序列保留在控制台上...好吧,这是一个错误,但这是因为该术语无法跟上光标的移动

Golfed @ 188 186 176

d(){ for((r=1;r<$2+41;r++));do $4"$3$r;$1H\u$[RANDOM%59+21]";(($r>$2))&&$4"$3$[r-$2];$1H ";$s;done;}
s=sleep\ .1;while $s;do d $[RANDOM%80] $[RANDOM%10+5] '\033[' printf\ &done

这适用于80x40的网格。您可以RANDOM%80在最后一行和r<$2+41第二行进行更改。在它们掉出网格后,我无法清除掉它们,因此您可以将术语大小调整为80x40或将41更改为$LINES+1。与完整版本相比,有几件事是没有的:

  • 学期准备或清理
  • 精美的着色(占用52个字节,因此不值得)
  • 随机停止(水滴总是落到底部)
  • 我可以不指定为“滴”的最小长度,使其下降到174:$[RANDOM%10+5]将成为$[RANDOM%15]

即使有这些限制,我也认为它很酷!

编辑:我尝试使用像squeamish ossifrage这样的unicode字符,但是由于它们是双倍宽度的字符,因此它们很快填充了网格,最终看起来很奇怪。

我还通过使用unicode代码点而不是ASCII来简化了高尔夫球版本,因此在获取字符之前不必进行八进制设置,从而节省了一步。我在主版本中做了同样的事情,但是添加了注释以使其保持1024个字节。

然后将int比较从更改[ $r -gt $2 ](($r>$2)),空格使我丧命,但是我找不到另一种比较int而不是字符串的方法。高尔夫版本降到了176 bty!


打高尔夫球的人也有点像叉子炸弹;)
罗伯·

1
@RobStarling他们俩实际上都是!
ThinkChaos 2014年

1
真的很喜欢这个!我已经进行了一些修改,看来您可以更改\033[\033[0;32m\033[(至少在我的终端中)使其变为绿色。尝试将其设置为终端屏幕保护程序有多么糟糕的主意?:P
Dom Hastings 2014年

嗯 我第一个获得1059字节,第二个获得190字节。
Renae Lider 2014年

1
你们基本上是巫师!感谢分享!
Dom Hastings 2014年

8

JavaScript,830个字节

它具有所有经典功能,例如:

  1. 黑色背景
  2. 绿色文字
  3. 掉落时为白色文字
  4. 随机字符
  5. 空洞
  6. 无限循环

window.onload=function(){
    var tbl=document.createElement('table'),
	body=document.body;
	body.style.backgroundColor='#000';
	body.style.color='#060';
	body.style.fontFamily='Lucida Console';

    for(var i = 0; i <= 30; i++){
        var tr = tbl.insertRow();
        for(var j = 0; j <= 50; j++){
            var td = tr.insertCell();
			td.style.width="2%";
        }
    }
    body.appendChild(tbl);
	setInterval(function(){
		rain(Math.floor((Math.random()*50)),0)
	},20);
}
function rain(n,i) {          
   setTimeout(function (){
	  var e=document.getElementsByTagName('tr')[i].childNodes[n];
	  e.style.color='#fff';
      e.innerHTML = '&#'+Math.floor((Math.random()*127)+1)+';';
	  setTimeout(function(){e.style.color=''},200)
	  
      if (i++ < 30) rain(n,i);
   },20);
};

我喜欢它,因为它重量轻,运动流畅且简单。请享用!


6

QBasic 1,587字节,32 + 5 = 37点

DECLARE SUB d (p!, s!, x!, y!)
DIM t(80)
FOR i = 1 TO 80
    t(i) = INT(-50 * RND)
NEXT
s = TIMER

CLS
WHILE 1
    FOR i = 1 TO 80
        IF t(i) > 28 THEN t(i) = 0
        t(i) = t(i) + 1
        y = t(i)
        d 0, 0, i, y - 6
        d 2, 0, i, y - 5
        d 2, 0, i, y - 4
        d 10, 0, i, y - 3
        d 10, 0, i, y - 2
        d 11, 0, i, y - 1
        d 0, 2, i, y
    NEXT

    l = TIMER
    WHILE l = TIMER
    WEND
WEND

SUB d (p, s, x, y)
COLOR p, s
IF y > 0 AND y < 24 THEN LOCATE y, x: PRINT CHR$(33 + (x * y) MOD 200);
END SUB

屏幕截图示例:

Q基本矩阵1

32个基点+ 5个颜色点。但是由于即使没有空白修剪或优化,我也很高兴地浮动到1024字节以下,所以让我们添加一些其他东西来窃取一些要点:

QBasic 2、913字节,32 + 5 + 15 + 5 = 57点

DECLARE SUB d (p!, s!, x!, y!)
DIM t(80)
FOR i = 1 TO 80
    t(i) = INT(-50 * RND)
NEXT
s = TIMER
f = 0
w$ = "bullet"
o = 1
CLS
WHILE 1
    FOR i = 1 TO 80
        IF t(i) > 28 THEN t(i) = 0: IF f THEN SOUND 100 * i, 1
        t(i) = t(i) + 1
        y = t(i)
        d 0, 0, i, y - 6
        d 2 + x, 0, i, y - 5
        d 2 + x, 0, i, y - 4
        d 10 + x, 0, i, y - 3
        d 10 + x, 0, i, y - 2
        d 11 + x, 0, i, y - 1
        d 0, 2 + x, i, y
    NEXT
    k$ = INKEY$
    IF k$ <> "" THEN
        IF MID$(w$, o, 1) = k$ THEN
            o = o + 1
            IF o = LEN(w$) + 1 THEN z = 1: f = 100
        ELSE
            o = 1
        END IF

    END IF
    x = x + z
    l = TIMER
    WHILE l = TIMER
    WEND

WEND

SUB d (p, s, x, y)
COLOR p MOD 16, s MOD 16
IF y > 0 AND y < 24 THEN LOCATE y, x: PRINT CHR$(33 + (x * y) MOD 200);
END SUB

屏幕截图示例(已激活色彩效果):

Qbasic矩阵2

与第一个功能相同。此外,它还具有:

  • 颜色(+5)
  • 激活额外功能的密码。(我声称+5是一项新功能。)
  • 密码激活调色板淡入淡出和声音效果。(声音+15。)

展示其实际效果的视频,包括通过密码激活的色彩效果和声音效果:

http://www.youtube.com/watch?v=MQc-FDl_AZ8


5

GTB,42分

从TI-84计算器执行,大约100个字节:

"  O O    O O   O"→Str1:"O  O   O O  O O "→Str2:0→X[@getkey=25$~""~""~""~""~""~""~""p;&@round(r;$~""#@round(r;$~Str1#~Str2&:&]

特效

由于计算器一开始是黑+白的,所以在那儿做不了多少...

  • 雨伞 -按下向上键可以清除雨水并保持干​​燥,直到您按下Enter
  • 在内部运行 -按ON会中断程序,并为您提供一个使屋顶保持干燥的漂亮屋顶(您可以按Enter两次以退回雨中

在我的TI-92上完美工作!太棒了
Renae Lider

@ user3058846我很高兴您喜欢它:)虽然我不知道GTB可以在TI-92上执行。
Timtech

实际上是TI-92 Plus。
Renae Lider 2014年

@ user3058846所以您下载了编译器?
做得好

4

Ruby:374个字符

$><<"^[[2J"
w=->c,d,m{$><<"^[[0;3%d;%dm^[[%d;%dH%s"%[c,d[4],d[3]+d[1]-m,d[2],d[0][d[1]-m]]}
t=%w{Stack Exchange Programming Puzzle Code Golf}
r=[]
loop{r.map{|o|w[2,o,1]if o[1]>0
w[7,o,0]
o[1]+=1
o[0][0]==" "?r.delete(o):(o[0]=" "*o[1])*o[1]=0if o[1]>o[0].size}
sleep 0.1
r<<[(k=rand(10)%2)==0 ?t.sample: [*?a..?z].sample(rand(10)+5)*"",0,rand(80),rand(20),k+1]while r.size<25}

(注意:^[是单个字符。)

描述:

  • 同时进行25次运行(保持较低状态,以便使预定义的文本可读)
  • 每次跑步都有50%/ 50%的机会
    • 预定义的单词-以明亮的颜色显示
    • 5..15个小写字母的随机字符串–以深色显示
  • 在显示运行时,底部颜色为白色,其他颜色为绿色
  • 完全显示运行之后,将其逐个字符删除

样品运行:

阵雨


多少个字节(不是字符)?
Renae Lider 2014年

1
仅使用单字节字符,因此为374个字节。
manatwork 2014年

真的很喜欢您的版本!保持良好的工作。
Renae Lider 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.