Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print('Choose mode (debug, prod) : ')
- choice = read()
- if choice == "debug" then
- screen = peripheral.wrap("left")
- debug = peripheral.wrap("bottom")
- else
- screen = peripheral.wrap("monitor_0")
- debug = peripheral.wrap("monitor_1")
- end
- width, height = screen.getSize()
- symbols = {"x", "+", "*"}
- max_star = 5
- tail_borne = {min=2, max=8}
- function draw_tail(base_pos, dir, tail_length)
- local tail_char = ""
- local side = 0
- if dir == "W" then
- tail_char = "/"
- side = 1
- else
- tail_char = "\\"
- side = -1
- end
- for l=1,tail_length,1 do
- local m_x = base_pos.x + (side * l)
- local m_y = base_pos.y - (1 * l)
- screen.setCursorPos(m_x, m_y)
- screen.write(tail_char)
- end
- end
- borne = {min=-4, max=width+4}
- borne.middle = borne.max / 2
- function generate_meteor(speed)
- x_pos = math.random(borne.min, borne.max)
- n_dir = ""
- if x_pos < borne.middle then n_dir="E" else n_dir="W" end
- meteor = {
- pos={x=x_pos,y=-3},
- speed=speed,
- direction=n_dir,
- tail_length=math.random(tail_borne.min, tail_borne.max)
- }
- debug.setCursorPos(1,1)
- debug.write(meteor.direction)
- debug.setCursorPos(1,2)
- debug.write("X : "..meteor.pos.x.."/ Y : "..meteor.pos.y)
- return meteor
- end
- function update_meteor(meteor)
- if meteor.direction == "W" then
- meteor.pos.x = meteor.pos.x - meteor.speed
- else
- meteor.pos.x = meteor.pos.x + meteor.speed
- end
- meteor.pos.y = meteor.pos.y + meteor.speed
- screen.setCursorPos(meteor.pos.x, meteor.pos.y)
- screen.write("O")
- draw_tail(meteor.pos, meteor.direction, meteor.tail_length)
- -- print(meteor.pos.x, meteor.pos.y)
- -- sleep(0.1)
- end
- meteor_tab = {
- generate_meteor(1),
- generate_meteor(1),
- generate_meteor(1)
- }
- function init_star_tab(star_count)
- tab = {index=1, list={}}
- for i=1, star_count,1 do
- rand_x = math.random(1, width)
- rand_y = math.random(1, height)
- tab.list[i] = {rand_x, rand_y}
- end
- return tab
- end
- start_char = {"/", "|", "\\"}
- end_char = {"\\", "|", "/"}
- function draw_cadre(text_pos, text_w)
- start_height = text_pos.y - 1
- for h=0,2,1 do
- new_line = ""
- new_line = start_char[h+1]..new_line
- for w=1,text_w,1 do
- new_line = new_line.."-"
- end
- new_line = new_line..end_char[h+1]
- screen.setCursorPos(text_pos.x-1, start_height+h)
- screen.write(new_line)
- end
- end
- function generate_text(text, pos_y, dir)
- return {
- content=text,
- pos={x=-#text, y=pos_y or height/2},
- direction = dir or "none",
- borne={min=(#text/2)+2,max=width-(#text/2)}
- }
- end
- function update_text_pos(text)
- if text.direction ~= "none" then
- if text.direction == "right" then
- if text.pos.x < text.borne.max then
- text.pos.x = text.pos.x + 1
- else
- text.direction = "left"
- end
- elseif text.direction == "left" then
- if text.pos.x > text.borne.min then
- text.pos.x = text.pos.x - 1
- else
- text.direction = "right"
- end
- end
- else
- print(text.content.."ne bouge pas")
- end
- end
- function text_middle_screen(text)
- t_w = #text / 2
- s_w = (width / 2) - (t_w)
- s_h = (height / 2) - 1
- -- screen.setCursorPos(s_w, s_h)
- draw_cadre({x=s_w,y=s_h}, #text )
- screen.setCursorPos(s_w, s_h)
- screen.write(text)
- end
- function draw_text(text_obj)
- f_pos = {
- x=text_obj.pos.x - #text_obj.content/2,
- y=text_obj.pos.y - 1
- }
- draw_cadre(f_pos, #text_obj.content)
- screen.setCursorPos(f_pos.x, f_pos.y)
- screen.write(text_obj.content)
- end
- function addStar(star_arr)
- for i=1, #star_arr.list, 1 do
- if i == star_arr.index then
- pos_x = math.random(1,width)
- pos_y = math.random(1,height)
- star_arr.list[i] = {pos_x, pos_y}
- end
- next_x = star_arr.list[i][1]
- next_y = star_arr.list[i][2]
- screen.setCursorPos(next_x, next_y)
- random_symbol = symbols[math.random(1, #symbols)]
- screen.write(random_symbol)
- end
- star_arr.index = star_arr.index + 1
- if star_arr.index > #star_arr.list then
- star_arr.index = 1
- end
- end
- test = init_star_tab(50)
- function meteor_management(meteor, m_index)
- if meteor.pos.y > height+10 or
- meteor.pos.x > width+50 or
- meteor.pos.x < -50 then
- -- print('oui je me regenere')
- meteor_tab[m_index] = generate_meteor(math.random(1,3))
- else
- update_meteor(meteor)
- end
- end
- center_text = generate_text("Bonjour a tous !", height/2, "right")
- while true do
- screen.clear()
- addStar(test)
- for ind=1,#meteor_tab,1 do
- meteor_management(meteor_tab[ind], ind)
- end
- update_text_pos(center_text)
- draw_text(center_text)
- --text_middle_screen("Salut les p'tits amis ! ")
- sleep(0.2)
- end
Add Comment
Please, Sign In to add comment