Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
All static elements in place
require 'rubygems'
require 'ray'
WIDTH = 800
HEIGHT = 800
PADDLE_X_OFFSET = 40
PADDLE_WIDTH = 40
BALL_RADIUS = 20
SCORE_TEXT_X_OFFSET = 40
def paddle(paddle_x_coord, paddle_y_coord)
arguments_array = [paddle_x_coord, paddle_y_coord, PADDLE_WIDTH, HEIGHT / 3]
Ray::Polygon.rectangle(arguments_array, Ray::Color.white)
end
def ball
Ray::Polygon.circle([WIDTH/2, HEIGHT/2], BALL_RADIUS, Ray::Color.white)
end
def center_x_pos
WIDTH / 2
end
def pixels_left_of_center(num_pixels)
center_x_pos - num_pixels
end
def pixels_right_of_center(num_pixels)
center_x_pos + num_pixels
end
def middle_line
line_width = 5
line_x_pos = center_x_pos
Ray::Polygon.line([line_x_pos, 0], [line_x_pos, HEIGHT], line_width, Ray::Color.white)
end
Ray.game 'Pong', :size => [WIDTH, HEIGHT] do
register { add_hook(:quit, method(:exit!)) }
scene :start do
@left_paddle = paddle(PADDLE_X_OFFSET, 100)
@right_paddle = paddle(WIDTH - (PADDLE_X_OFFSET + PADDLE_WIDTH), 100)
@ball = ball
@left_score = text "left", :at => [pixels_left_of_center(SCORE_TEXT_X_OFFSET), 20], :size => 20
@right_score = text "right", :at => [pixels_right_of_center(SCORE_TEXT_X_OFFSET), 20], :size => 20
@scores = [@left_score, @right_score]
@middle_line = middle_line
# Exit when q is pressed
on :key_press, key(:q){ exit! }
render do |win|
win.draw @left_paddle
win.draw @right_paddle
win.draw @ball
win.draw @middle_line
@scores.each{|score| win.draw score }
end
end
scenes << :start
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment