Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import random
- import time
- import sys
- import math
- xsize = 70
- ysize = 20
- vram=[]
- progs=['help','menu','tp','notepad']
- def setup_window(): # размер окна консоли
- global xsize
- global ysize
- os.system("mode con cols={} lines={}".format(xsize,ysize+1))
- setup_window() # задание размеров окна консоли
- def screen_cls(): # очистка экрана (предотвращат мигание)
- os.system("cls")
- def vram_clear(): # чистая видеопамять
- global ysize
- global xsize
- global vram
- vram=[]
- for i in range(xsize*ysize):
- vram.append([' '])
- vram_clear() # инициализация "видеопамяти" при запуске
- def render(): # рендер переданной видепамяти
- global vram
- global xsize
- global ysize
- for i in range(len(vram)): # алгоритм рендера
- if i%xsize==0: print(vram[i][0], sep='')
- else: print(vram[i][0], end='', sep='')
- def vin(char,x,y): # функция доступа к знакомесатм по координатам
- global vram
- global xsize
- ind = y * xsize + x+1 # вычисление смещения знакоместа
- vram[ind][0]=char # запись значения в знакоместо
- #return vram # археологи говорят, что это когда-то было нужно
- def draw_arr(arr): # оцтань от этого, потом переделаешь
- for i in range(len(arr)):
- vin('8',i,arr[i])
- for j in range(0,arr[i]):
- vin('|', i, j)
- render()
- def vin_string(word, x, y):
- for i in range(len(word)):
- vin(word[i],x+i,y)
- def tp():
- global xsize
- global ysize
- vram_clear()
- word = 'ti pidor'
- for i in range(len(word)):
- vin(word[i], i, 1) # записть word в видепамять со 4 элемента 2 строки
- for i in range(xsize):
- vin('_', i, 0)
- render()
- cin()
- def help():
- global xsize
- global ysize
- vram_clear()
- vin_string('ширина окна - {} знакомест'.format(xsize), 0, 0)
- vin_string('высота окна - {} знакомест'.format(ysize), 0, 1)
- vin_string('_'*xsize, 0, 2)
- render()
- cin()
- def menu():
- global xsize
- global ysize
- global progs
- vram_clear()
- render()
- vin_string('PythonOs v0.001|', 0, 0)
- vin_string('͞' * xsize, 0, 1)
- vin_string('aviable programs: ',1,2)
- for i in range(len(progs)):
- vin_string('- '+progs[i], 0, 3+i)
- render()
- cin()
- def notepad():
- global xsize
- global ysize
- vram_clear()
- vin_string('PythonOs NotePad v0.0001', 0, 0)
- vin_string('͞' * xsize, 0, 1)
- for i in range(2,ysize-2):
- b=str(i-1)
- if len(b)<2:
- b+=' '
- vin_string(b+':', 0, i)
- render()
- inp = ''
- count=2;
- while True:
- print()
- inp = input()
- render()
- if inp == 'close' or inp == 'exit' or inp == 'quit' or inp=='menu':
- menu()
- elif inp == 'clear':
- notepad()
- else:
- vin(inp,3,count)
- render()
- count+=1;
- def zastavka(t):
- vram_clear()
- vin_string('͞' * xsize, 0, 4)
- vin_string('͞' * xsize, 0, 13)
- vin_string(' '*(xsize//2-len('PythonOS')//2)+'PythonOS', 0, 15)
- render()
- for i in range(xsize):
- vin('=',i,16)
- time.sleep(random.randint(5,10)/100)
- vin('0',i,8+int(math.sin(i/2)*4))
- render()
- def cin():
- global progs
- global xsize
- global ysize
- global progs
- inp = ''
- while not inp:
- print()
- inp = input()
- render()
- if inp in progs:
- exec('{}()'.format(inp))
- def main():
- global xsize
- global ysize
- global vram
- zastavka(2)
- menu()
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement