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 = 80
- ysize = 20
- vram=[]
- progs=['help','menu','tp','notepad', 'resize', 'suicide','loading','calculator']
- 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':
- break
- elif inp == 'clear':
- notepad()
- else:
- vin_string(inp,3,count)
- render()
- count+=1;
- if count == ysize - 2:
- count = 2;
- menu()
- def loading():
- 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()
- menu()
- def calculator():
- global xsize
- global ysize
- vram_clear()
- vin_string('Calculator v0.1', 0, 0)
- vin_string('͞' * xsize, 0, 1)
- render()
- c = 2;
- while True:
- print()
- inp = input()
- render()
- if inp=='exit' or inp=='menu' or inp=='quit':
- break
- else:
- try:
- res = eval(inp)
- vin_string(' '*xsize,0, c)
- vin_string(inp+' = '+str(res),1, c)
- c+=1
- vin_string(' ', xsize - len('error'), 2)
- if c==ysize-2:
- c=2;
- render()
- except:
- vin_string('error', xsize - len('error'), 2)
- render()
- menu()
- def resize():
- global xsize
- global ysize
- vram_clear()
- screen_cls()
- vin_string('input size "CC LL"',1,1)
- vin_string('LL - ysize', 1, 2)
- vin_string('CC - xsize', 1, 3)
- vin_string(str(xsize), xsize // 2,0)
- vin_string(str(ysize), xsize-3, ysize//2)
- render()
- print()
- inp = input()
- inp = inp.split()
- vin_string('{} cols and {} lines'.format(inp[0],inp[1]), 0, ysize//2-1)
- vin_string(inp[0], xsize // 2,0)
- vin_string(inp[1], xsize-3, ysize//2)
- render()
- print()
- input()
- xsize = int(inp[0])
- ysize = int(inp[1])
- vram_clear()
- setup_window()
- menu()
- def suicide():
- global vram
- c=0
- while True:
- vram[c][0]=chr(c)
- c+=1
- 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))
- else:
- vin_string('error', 2, ysize-2)
- render()
- cin()
- def main():
- global xsize
- global ysize
- global vram
- #loading()
- menu()
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement