View difference between Paste ID: 5K6yh6g6 and Pg8edkzJ
SHOW: | | - or go back to the newest paste.
1
local c = require("component")
2
local computer = require("computer")
3
local gpu = c.gpu
4-
--local os = require("os")
4+
5
local math = require("math")
6-
os.execute("resolution 124 48")
6+
7
local w, h = gpu.getResolution()
8
x = w - 4
9-
x = w / 2                            -- шарик
9+
y = h - 4
10-
y = h / 2                            --
10+
l = 16
11-
dy = 1
11+
t = 0
12-
dx = 0
12+
platformaS = w / 2 - l / 2 - 1  -- стартовая позиция платформ
13-
l = 32                               --длина платформы в пикселях
13+
platformaS2 = platformaS        -- платформа2 позиция старта
14-
platformaS = w / 2 - l / 2
14+
platformaS1 = platformaS        --          1
15-
kirpichNX = 6                        --кол-во кирпичей
15+
dy = -1                         -- изменение положения шарика по у
16-
kirpichNY = 4 
16+
dx = 0                          -- по х (вектор = 1)
17-
PBTkir = 0                           --расстояние между кирпичами
17+
ez = 16                         -- не знаю работает ли... в теории дает возможность двигаться платформе в 16 быстрее шара.
18-
heightKirpich = 2                    
18+
19-
widthKirpich = 10                    --размер кирпича
19+
colorPlatforma = 321321         -- цвет платформы
20-
strengthKirpich = 321321             --не рабочий стафф
20+
colorShar = 123123              -- цвет шара
21-
colorPlatforma = 321321              --цвет платформы
21+
22-
colorShar = 123123                   --цвет шарика
22+
23
function GameOver(player)       -- конец игры(player = loser)      
24-
function PutPixel(x, y, color, text)  --просто удобная штука. мне так проще
24+
25
  return 0
26
end
27
28
function PutPixel(x, y, color, text) -- люблю эту функцию, получает пиксель там где надо
29
  gpu.setBackground(color)
30-
function getKirpich(xk, yk, colorK)  --рисуем кирпич
30+
31-
  gpu.setBackground(colorK)
31+
32-
  gpu.fill(xk, yk, widthKirpich, heightKirpich, " ")
32+
33
34
35-
function printKirpich()              --рисуем кирпичи
35+
36-
  for i1 = 0, kirpichNX - 1 do
36+
37-
    for i2 = 0, kirpichNY - 1 do
37+
function getPlatform()  -- подготовка, рисует платформу
38-
      getKirpich(PBTkir + (widthKirpich + PBTkir) * i1 + 2, PBTkir + (heightKirpich + PBTkir) * i2 + 2, math.random() * 1000000)
38+
  for i = 0, l - 1 do
39
    PutPixel(platformaS + i , h, colorPlatforma, " ") 
40
    PutPixel(platformaS + i , 1, colorPlatforma, " ")
41
  end
42
end
43-
function getPlatform()               --рисуем платформу
43+
44-
  for i = 1, l do
44+
function start()  -- начало игры
45
  gpu.setBackground(0) 
46
  gpu.fill(1, 1, w, h, " ")
47
  PutPixel(w / 2 - 6, h / 2 - 6, 777777, "Hello World")
48
  os.sleep(1)
49-
function GameOver(reason)            --ну тут понятно гейм овер
49+
50
  getPlatform()
51-
  dy = 0 - dy
51+
52
53-
  computer.shutdown()
53+
54
function platforma()  -- движение платформы - 205 = --> 203 = <--  208 = <-- 200 = --> 
55
  for i = 1, ez do
56-
function start()                     --стартует игра и вызывает всякие функции для отрисовки всего
56+
    event.listen("key_down", function(k1, k2, k3, k4) key = k4 end)  -- подходит с трудом ибо если оба нажали работает у последнего
57
    if key == 203 and platformaS1 - 1 > 0 then            --1 игрок
58
      PutPixel(platformaS1 + l - 1, h, 0, " ")
59
      PutPixel(platformaS1 - 1, h, colorPlatforma, " ")
60
      platformaS1 = platformaS1 - 1
61
      key = 0
62
    end
63-
  printKirpich()
63+
    if key == 205 and platformaS1 + l < w + 1 then
64
      PutPixel(platformaS1, h, 0, " ")
65
      PutPixel(platformaS1 + l, h, colorPlatforma, " ")
66-
function platforma()                 --платформа едет
66+
      platformaS1 = platformaS1 + 1
67-
  event.listen("key_down", function(k1, k2, k3, k4) key = k4 end)
67+
      key = 0
68-
  if key == 203 and platformaS > 1 then
68+
69-
    PutPixel(platformaS + l, h, 0, " ")
69+
    if key == 208 and platformaS2 + 1 > 0 then            --2 игрок
70-
    PutPixel(platformaS, h, colorPlatforma, " ")
70+
      PutPixel(platformaS2 + l - 1, 1, 0, " ")
71-
    platformaS = platformaS - 1
71+
      PutPixel(platformaS2 - 1, 1, colorPlatforma, " ")
72-
    key = 0
72+
      platformaS2 = platformaS2 - 1
73
      key = 0
74-
  if key == 205 and platformaS + l < w - 2 then
74+
75-
    PutPixel(platformaS, h, 0, " ")
75+
    if key == 200 and platformaS2 + l < w + 1 then
76-
    PutPixel(platformaS + l, h, colorPlatforma, " ")
76+
      PutPixel(platformaS2, 1, 0, " ")
77-
    platformaS = platformaS + 1
77+
      PutPixel(platformaS2 + l, 1, colorPlatforma, " ")
78-
    key = 0
78+
      platformaS2 = platformaS2 + 1
79
      key = 0
80-
  event.ignore("key_down", function(k1, k2, k3, k4) end)
80+
81-
  os.sleep(1 / 20)
81+
    os.sleep(0,05)
82
  end
83
end
84-
function test()                      --проверка всего
84+
85-
  if x < 3  or x > w - 2 then        --отражение от границ экрана
85+
86
function test()  -- физика(нет) не работает. Если у шарика у < 1 то меняет направление несколько раз = не работает
87
  if 3 > x or x > w - 3 then
88-
  if y < 3 then                      --см верх
88+
89
  end
90
  if 3 > y or y > h - 2 then
91-
  if y < h - 5 then                  --определение отражение от кирпичей
91+
92-
    local char, foreColor, backColor = gpu.get(x + dx, y + dy)
92+
93-
    kx = x + dx
93+
  if t < 1 then
94-
    ky = y + dy
94+
  if y == 2 then
95-
    if backColor ~= 0 then
95+
    if x < platformaS2 or x > platformaS2 + l then
96-
      char, foreColor, backColor1 = gpu.get(x + 1, y)
96+
      GameOver(0)
97-
      char, foreColor, backColor2 = gpu.get(x - 1, y)
97+
98-
      char, foreColor, backColor3 = gpu.get(x, y + 1)
98+
      dx = ((x % platformaS2) - l / 2) / l * 2  -- зависимость dx от места попадание на платформу игрок
99-
      char, foreColor, backColor4 = gpu.get(x, y - 1)
99+
100-
      if backColor1 ~= backColor and backColor2 ~= backColor then
100+
101-
        dy = 0 - dy
101+
102-
      end
102+
 if y == h - 1 then
103-
      if backColor3 ~= backColor and backColor4 ~= backColor then
103+
    if x < platformaS1 or x > platformaS1 + l then
104-
        dx = 0 - dx
104+
105-
      end
105+
106-
      char, foreColor, backColor5 = gpu.get(kx - 1, ky)
106+
      dx = ((x % platformaS2) - l / 2) / l * 2  -- зависимость dx от места попадание на платформу игрок 
107-
      while backColor5 == backColor and kx - 2 > 0 do
107+
108-
        char, foreColor, backColor5 = gpu.get(kx - 2, ky)
108+
      t = 8
109-
        kx = kx - 1
109+
110-
      end
110+
111-
      char, foreColor, backColor5 = gpu.get(kx, ky - 1)
111+
112-
      while backColor5 == backColor and ky - 2 > 0 do
112+
113-
        char, foreColor, backColor5 = gpu.get(kx, ky - 2)
113+
114-
        ky = ky - 1
114+
function shar() --движение шара, надо переделать последовательность.
115-
      end
115+
116-
      getKirpich(kx, ky, 0)         --удаляет киприч
116+
117
  y = y + dy
118
  test()
119-
  if y + dy > h or y + dy == h then --отражение шарика от платформы
119+
120-
    if x < platformaS + 1 or x > platformaS + l + 1 then
120+
121
122
123-
      dy = 0 - dy
123+
start()
124-
      dx = ((x % (platformaS + 1)) - l / 2) / l * 2  --зависимость dx от места попадание на платформу игрок, надо доработать
124+
while key ~= 28 do  -- конец игры если нажали enter
125
shar()
126
platforma()  
127
platforma()  -- ez не работало сделал костыль безногому
128
end
129
gpu.setBackground(0)