10
Апр

Часы

w=cp.Window.new("Clock")
c=0
function a(f,a,r)
  f:line(32,32,32+math.sin(a*math.pi/360)*r,32-math.cos(a*math.pi/360)*r,1)
end
pau=true
sc=0
w.keyDown=function(k)
  if k==0 then
    if pau then
      sc=0
    else
      sc=cp.millis()
    end
  elseif k==5 then
    pau=not pau
    sc=cp.millis()-sc
  end
end
w.render=function(f)
  f:circle(32,32,18,1)
  t=os.date("*t")
  a(f,t.sec*12,13)
  a(f,t.min*12,7)
  a(f,t.hour%12*60,4)
  v=0
  if pau then
    v=sc
  else
    v=cp.millis()-sc
  end
  f:string(60,20,cp.round((v)/1000)/1000,1)
  f:string(60,32,os.date("%X"),1,7)
end
w.sleepLock=function()
  return true
end
cp.displayWindow(w)
10
Апр

Точки

-- Sowlonya <3
field={}
player=1
cur={
  x=0,
  y=0,
  frame=true
}
function column(x)
  v=field[x]
  if v == nil then
    v={}
    field[x]=v
    return v
  end
  return v
end
w=cp.Window.new("Dots")
cp.displayWindow(w)
--[[
w.isFullscreen=function()
  return true
end
]]--

function tablecpy(t)
  c={}
  for k,v in pairs(t) do
    c[k]=v
  end
  return c
end
function tablelen(t)
  l=0
  for k,v in pairs(t) do
    l=l+1
  end
  return l
end

sdx=0
sdy=0
ssX=0
ssY=0
w.render=function(f)
  ssX=ssX+(sdx*10-ssX)*0.08
  ssY=ssY+(sdy*10-ssY)*0.08
  sw=cp.round(ssX/10)
  sh=cp.round(ssY/10)
  for x=-6-sw,6-sw do
    for y=-4-sh,4-sh do
      p=column(x)[y]
      cx=64 + x * 10+ssX
      cy=32 + y * 10+ssY
      if p == nil then
        f:rect(cx,cy,1,1,1)
      elseif p == 1 or p == 3 then
        f:rect(cx - 1,cy - 1,3,3,0)
        f:circle(cx,cy,3,1)
      elseif p == 2 or p == 4 then
        for i=1,2 do
          f:circle(cx,cy,i,1)
        end
      elseif p == 5 then
        --f:rect(cx - 4,cy - 4,8,8,1)
      elseif p == 6 then
        f:line(cx - 3,cy + 3,cx + 3,cy - 3,1)
        f:line(cx + 3,cy - 3,cx - 3,cy + 3,1)
      end
      if p == 3 or p == 4 then
        if p == get(x + 1,y) then
          f:line(cx,cy,cx + 10,cy,1)
        end
        if p == get(x,y + 1) then
          f:line(cx,cy,cx,cy + 10,1)
        end
        if p == get(x + 1,y + 1) then
          f:line(cx,cy,cx + 10,cy + 10,1)
        end
        if p == get(x - 1,y + 1) then
          f:line(cx,cy,cx - 10,cy + 10,1)
        end
      end
    end
  end

  if cur.frame then
    cur.frame=false
    f:circle(64 + cur.x * 10+ssX,32 + cur.y * 10+ssY,4,1)
  else
    cur.frame=true
  end
end
function get(x,y)
  return column(x)[y]
end
function aabb(l)
  minX=10000
  maxX=-10000
  minY=10000
  maxY=-10000
  for k,v in pairs(l) do
    t=k:gmatch("[^:]+")
    x=tonumber(t())
    y=tonumber(t())
    --cp.message(x.." "..y)
    if minX > x then
      minX=x
    end
    if maxX < x then
      maxX=x
    end
    if minY > y then
      minY=y
    end
    if maxY < y then
      maxY=y
    end
  end
  return maxX - minX + 1,maxY - minY + 1
end
function vectorTest(x,y,dx,dy,d,l)
  for i=1,d do
    local cx=x + dx * i
    local cy=y + dy * i
    if l[cx .. ":" .. cy] then
      --cp.message("vt "..x.." "..y.." "..dx.." "..dy.." passed")
      return true
    end
  end
  --cp.message("vt "..x.." "..y.." "..dx.." "..dy.." failed")
  return false
end
function recursiveFill(sx,sy,v,l,s)
  local n=sx .. ":" .. sy
  if not l[n] and not s[n] then
    --local p=get(sx,sy)
    --if p == nil or p <= 4 then
      column(sx)[sy]=v
      s[n]=true
      recursiveFill(sx + 1,sy,v,l,s)
      recursiveFill(sx - 1,sy,v,l,s)
      recursiveFill(sx,sy + 1,v,l,s)
      recursiveFill(sx,sy - 1,v,l,s)
  --  end
  end
end
function conn(x,y,l,px,py,ch)
  local p=get(x,y)
  local n=x .. ":" .. y
  if p == nil or not (p == player or p - 2 == player) then
    return 0
  end
  --cp.message(n)
  if l[n] then
    if ch then
      for k,v in pairs(l) do
        t=k:gmatch("[^:]+")
        x=tonumber(t())
        y=tonumber(t())
        prev=get(x,y)
        if prev <= 2 then
          column(x)[y]=prev + 2
        end
      end
      w,h=aabb(l)
      --cp.message(w.." "..h)
      for ox=-1,1 do
        for oy=-1,1 do
          if not (ox == 0 and oy == 0) then
            local cx=x + ox
            local cy=y + oy
            if not l[cx .. ":" .. cy] then
              if vectorTest(cx,cy,1,0,w,l) and vectorTest(cx,cy,-1,0,w,l) and vectorTest(cx,cy,0,1,h,l) and vectorTest(cx,cy,0,-1,h,l) then
                recursiveFill(cx,cy,player + 4,l,{})
              end
            end
          end
        end
      end
    end
    return tablelen(l), x, y,tablecpy(l)
  end
  l[n]=true
  local c = 0
  local rx = 0
  local ry = 0
  for ox=-1,1 do
    for oy=-1,1 do
      if c > 0 then
        break
      end
      if not (ox == 0 and oy == 0) and not (x + ox == px and y + oy == py) then
        --local cch = tablecpy(l)
        local cc, crx, cry,cch = conn(x + ox,y + oy,l,x,y,ch)
        if cc ~=nil and cc > c then
          c = cc
          rx = crx
          ry = cry
          l = cch
        end
      end
    end
  end
  l[n]=nil
  return c, rx, ry,l 
end
w.keyDown=function(k)
  if k == 4 then
    cur.x=cur.x - 1
    sdx=math.max(sdx,-cur.x-1)
  elseif k == 6 then
    cur.x=cur.x + 1
    sdx=math.min(sdx,-cur.x+1)
  elseif k == 1 then
    cur.y=cur.y - 1
    sdy=math.max(sdy,-cur.y-1)
  elseif k == 9 then
    cur.y=cur.y + 1
    sdy=math.min(sdy,-cur.y+1)
  elseif k == 15 then
    t=column(cur.x)
    if t[cur.y] == nil then
      t[cur.y]=player
      c, gx, gy = conn(cur.x,cur.y,{},nil,nil,false)
      if c > 0 then
        local cx=gx
        local cy=gy
        conn(cx,cy,{},nil,nil,true)
      end
      player=3 - player
    end
  end
end
w.mDrawTitle=false
08
Апр

Решение квадратных уравнений

local a = cp.input('A')
local b = cp.input('B')
local c = cp.input('C')
local d = b*b-4*a*c
if d > 0 then
  local s = math.sqrt(d)
  local x1 = (-b+s)/(2*a)
  local x2 = (-b-s)/(2*a)
  cp.message(x1..'\n'..x2.."\nD="..d)
elseif d==0 then
  local x = (-b)/(2*a)
  cp.message(x.."\nD="..d)
else
  cp.message('err')
end
31
Мар

Minecraft Forge в IntelliJ IDEA

В этом туториале я опишу установку Minecraft Forge в среде разработки IntelliJ IDEA для разработки модов

22
Мар

Я пока не жив

Из-за болезни не могу нормально озвучить видос, который я хотел выпустить ещё вчера. Потерпите ещё неделю, пожааааааалуйста