aboutsummaryrefslogtreecommitdiffhomepage
path: root/pw.rb
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-01-31 23:40:27 +0900
committernsfisis <nsfisis@gmail.com>2024-01-31 23:42:05 +0900
commit69c0972c81c60f47217a6e345b6e01b73de41af4 (patch)
treeb96bf24e40b2499db4092eb367cb53f5d9621b3d /pw.rb
parent21bf0f20145f0d7b5dc4d0922ef6e55120dcd583 (diff)
downloadpong-wars-quine.rb-main.tar.gz
pong-wars-quine.rb-main.tar.zst
pong-wars-quine.rb-main.zip
add filesHEADmain
Diffstat (limited to 'pw.rb')
-rw-r--r--pw.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/pw.rb b/pw.rb
new file mode 100644
index 0000000..5d9692f
--- /dev/null
+++ b/pw.rb
@@ -0,0 +1,25 @@
+eval(s=(%w@q=$*[0]&.to_i;z="eval(s=(%w#{64.chr}#{s}##{s*9}#{64.chr}.join))";h=25
+; w=80;px=2;py=h/2;vx=0.5;vy=-0.5;qx=w-3;
+q y=h/2;ux=-0.5;uy=0.5;b=Array.new(h*w){|
+i |y=i/w;x=i%w;(x==0||x==w-1||y==0||y==h-
+1 )?2:(w/2<x)?1:0};f=->(x,y,vx,vy,c){sx=v
+x ;sy=vy;8.times{|i|t=i*Math::PI/4;cos=Ma
+t h.cos(t);sin=Math.sin(t);nx=x+cos/2;ny=
+y +sin/2;k=ny.to_i*w+nx.to_i;if(0<=nx&&nx
+< w&&0<=ny&&ny<h&&b[k]!=c);b[k]==2?0:b[k]
+= c;(sin.abs<cos.abs)?sx*=-1:sy*=-1;end};
+[ sx,sy]};g=->(x,y,vx,vy){[(x+vx<0||w<=x+
+v x )?-vx:vx,(y+vy<0||h<=y+vy)?-vy:vy]};j=0
+; loop{j+=1;(vx,vy=f[px,py,vx,vy,0]); (vx
+, vy=g[px,py,vx,vy]);px+=vx;py+=vy;(ux,uy
+= f[qx,qy,ux,uy,1]);(ux,uy=g[qx,qy,ux,uy]
+) ;qx+=ux;qy+=uy;q&&((q<j)?(break):(q!=j)
+? (next):0);q||(print"\e[H\e[2J");c=[];h.
+t imes{|y|w.times{|x|c<<!(b[y*w+x]==0&&[p
+x .to_i,py.to_i]!=[x,y]||[qx.to_i,qy.to_i
+] ==[x,y])};};t=c.count(!!0);i=0;h.times{
+| y|w.times{|x|print((y==h-1&&x>=w-8)?"#{
+6 4.chr}.join))"[8+x-w]:c[y*w+x]?[z[i],i+
+= 1][0]:32.chr)};puts;};sleep(0.05);}#q=$
+* [0]&.to_i;z="eval(s=(%w#{64.chr}#{s}##{
+s*9}#{64.chr}.join))";h=25;w=80;px=2;py=h/2;vx=0.5;vy=-0.5;qx=w-3;qy=h/2@.join))