Guest User

Untitled

a guest
Dec 14th, 2019
98
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import os
  2. import random
  3. import time
  4. import sys
  5. import math
  6.  
  7. xsize = 70
  8. ysize = 20
  9. vram=[]
  10. progs=['help','menu','tp','notepad']
  11.  
  12. def setup_window(): # размер окна консоли
  13. global xsize
  14. global ysize
  15. os.system("mode con cols={} lines={}".format(xsize,ysize+1))
  16.  
  17. setup_window() # задание размеров окна консоли
  18.  
  19.  
  20. def screen_cls(): # очистка экрана (предотвращат мигание)
  21. os.system("cls")
  22.  
  23. def vram_clear(): # чистая видеопамять
  24. global ysize
  25. global xsize
  26. global vram
  27. vram=[]
  28.  
  29. for i in range(xsize*ysize):
  30. vram.append([' '])
  31.  
  32. vram_clear() # инициализация "видеопамяти" при запуске
  33.  
  34. def render(): # рендер переданной видепамяти
  35. global vram
  36. global xsize
  37. global ysize
  38.  
  39. for i in range(len(vram)): # алгоритм рендера
  40. if i%xsize==0: print(vram[i][0], sep='')
  41. else: print(vram[i][0], end='', sep='')
  42.  
  43.  
  44. def vin(char,x,y): # функция доступа к знакомесатм по координатам
  45. global vram
  46. global xsize
  47. ind = y * xsize + x+1 # вычисление смещения знакоместа
  48.  
  49. vram[ind][0]=char # запись значения в знакоместо
  50. #return vram # археологи говорят, что это когда-то было нужно
  51.  
  52.  
  53. def draw_arr(arr): # оцтань от этого, потом переделаешь
  54. for i in range(len(arr)):
  55. vin('8',i,arr[i])
  56. for j in range(0,arr[i]):
  57. vin('|', i, j)
  58. render()
  59.  
  60.  
  61. def vin_string(word, x, y):
  62. for i in range(len(word)):
  63. vin(word[i],x+i,y)
  64.  
  65. def tp():
  66. global xsize
  67. global ysize
  68. vram_clear()
  69. word = 'ti pidor'
  70. for i in range(len(word)):
  71. vin(word[i], i, 1) # записть word в видепамять со 4 элемента 2 строки
  72. for i in range(xsize):
  73. vin('_', i, 0)
  74. render()
  75. cin()
  76.  
  77. def help():
  78. global xsize
  79. global ysize
  80. vram_clear()
  81.  
  82. vin_string('ширина окна - {} знакомест'.format(xsize), 0, 0)
  83. vin_string('высота окна - {} знакомест'.format(ysize), 0, 1)
  84. vin_string('_'*xsize, 0, 2)
  85.  
  86.  
  87. render()
  88. cin()
  89.  
  90. def menu():
  91. global xsize
  92. global ysize
  93. global progs
  94. vram_clear()
  95. render()
  96.  
  97. vin_string('PythonOs v0.001|', 0, 0)
  98. vin_string('͞' * xsize, 0, 1)
  99.  
  100. vin_string('aviable programs: ',1,2)
  101. for i in range(len(progs)):
  102. vin_string('- '+progs[i], 0, 3+i)
  103.  
  104. render()
  105. cin()
  106.  
  107. def notepad():
  108. global xsize
  109. global ysize
  110.  
  111. vram_clear()
  112. vin_string('PythonOs NotePad v0.0001', 0, 0)
  113. vin_string('͞' * xsize, 0, 1)
  114. for i in range(2,ysize-2):
  115. b=str(i-1)
  116. if len(b)<2:
  117. b+=' '
  118. vin_string(b+':', 0, i)
  119. render()
  120. inp = ''
  121. count=2;
  122.  
  123. while True:
  124. print()
  125. inp = input()
  126. render()
  127. if inp == 'close' or inp == 'exit' or inp == 'quit' or inp=='menu':
  128. menu()
  129. elif inp == 'clear':
  130. notepad()
  131. else:
  132. vin(inp,3,count)
  133. render()
  134. count+=1;
  135.  
  136. def zastavka(t):
  137. vram_clear()
  138. vin_string('͞' * xsize, 0, 4)
  139. vin_string('͞' * xsize, 0, 13)
  140. vin_string(' '*(xsize//2-len('PythonOS')//2)+'PythonOS', 0, 15)
  141. render()
  142. for i in range(xsize):
  143. vin('=',i,16)
  144. time.sleep(random.randint(5,10)/100)
  145. vin('0',i,8+int(math.sin(i/2)*4))
  146. render()
  147.  
  148. def cin():
  149. global progs
  150. global xsize
  151. global ysize
  152. global progs
  153. inp = ''
  154.  
  155. while not inp:
  156. print()
  157. inp = input()
  158. render()
  159.  
  160. if inp in progs:
  161. exec('{}()'.format(inp))
  162.  
  163.  
  164. def main():
  165. global xsize
  166. global ysize
  167. global vram
  168. zastavka(2)
  169. menu()
  170.  
  171.  
  172.  
  173. main()
RAW Paste Data