# 1. Задання розмірів об'єктів require 'ruby2d' i = 0 # стан гри w = 780 # ширина вікна програми h = 500 # висота вікна програми a = 10 # ширина зображення ракетки b = 100 # висота зображення ракетки d = 20 # діаметр зображення м'яча v = 3 # приріст ординати центра ракетки за 1 такт оновлення екрану dx= 0 # приріст абсциси центра круга за 1 такт оновлення екрану dy= 0 # приріст ординати центра круга за 1 такт оновлення екрану dx_max=5# величина приросту абсциси центра круга за 1 такт оновлення екрану dy_max=3# верхня межа приросту ординати центра круга за 1 такт оновлення екрану sf="/usr/share/fonts/truetype/ubuntu/Ubuntu-B.ttf" # адреса використаного шрифту # 2. Створення об'єктів set title:"Гра «Пінг-понг»", # параметри вікна ігрового поля background:"#008000", width: w, height: h r0 = Rectangle.new(x: 0, y: (h-b)/2, width: a, height: b, z: 0, color: "red") # червона ракетка ліворуч r1 = Rectangle.new(x: w-a, y: (h-b)/2, width: a, height: b, z: 0, color: "yellow") # жовта ракетка праворуч ball= Image.new("ball.png", x: (w-d)/2, y: (h-d)/2, z:1, width: d, height: d, color:"white") Line.new( x1: a, y1: 0, x2: a, y2: h, width:1, color: 'white', z:0) Line.new( x1: w/2, y1: 0, x2: w/2, y2: h, width:1, color: 'white', z:0) Line.new( x1: w-a, y1: 0, x2: w-a, y2: h, width:1, color: 'white', z:0) t0 = Text.new("0", x: w/4, y:5, z:0, size: 28, font: sf, color:"white") t1 = Text.new("0", x:3*w/4, y:5, z:0, size: 28, font: sf, color:"white") r = Random.new # генератор випадкових чисел # 3. Обробник події натискання клавіші клавіатури on :key_held do |e| k=e.key u=0 if (k=="up") && (0 r0.y+b)) # пропуск м'яча програмою t1.text = (t1.text.to_i+1).to_i i = 0 elsif (w-a < ball.x+d) && ((ball.y+d/2 < r1.y) || (ball.y+d/2 > r1.y+b)) # пропуск м'яча гравцем t0.text = (t0.text.to_i+1).to_s i = 2 elsif (ball.x < a) ball.x = 2*a - ball.x # відбиття ракеткою програми dx = - dx elsif (ball.x + d > w-a) ball.x = 2*(w-a-d) - ball.x # відбиття ракеткою гравця dx = - dx end z = ball.y+(d-b)/2 if z < 0 then z = 0 elsif z > h-b then z = h-b end r0.y=z when 2 ball.x = w/2-d/2 ball.y = h/2-d/2 dx = dx_max dy = r.rand(-dy_max..dy_max) i = 1 end end show # показ вікна програми