среда, 26 августа 2020 г.

Змейка на Python Pygame


https://www.youtube.com/watch?v=x41O-TP-9BU&list=PLQAt0m1f9OHun6Q9uZPNryl5gXm1ng_kd&index=1

import pygame

import sys

import random

import time


FPS = 5

SIZE_BLOCK = 20

FRAME_COLOR = (0, 0, 100)

WHITE = (255,255,255)

BLUE = (100,100,255)

blue = (0,0,100)

red =  (255,0,255)

COUNT_BLOCK = 20

MARGIN = 1


x=10

y=10

napr_x = 1

napr_y = 0


size = [450,450]


screen = pygame.display.set_mode(size)

pygame.display.set_caption('Snake Game')

clock = pygame.time.Clock()


x_food = random.randint(0,19)

y_food = random.randint(0,19)


class SnakeBlock:

    def __init__(self,x,y):

        self.x=x

        self.y=y


snake_blocks = [SnakeBlock(9,8),SnakeBlock(9,9),SnakeBlock(9,10)]

суббота, 15 августа 2020 г.

Крестики нолики на Python Pygame

 

Два игрока

https://www.youtube.com/watch?v=GElUzJ7-bcI

import pygame

import sys


pygame.init()


size_block = 100

margin = 15

width = height = size_block*3+margin*4


blue = (0,0,255)

white = (255,255,255)

red= (255,0,0)


screen = pygame.display.set_mode((width,height))

pygame.display.set_caption('Tic tac toe')


mas = [[0]*3 for i in range(3)]

query=0


def check_win(mas):

    #x

    if mas[0][0]=='x' and mas[0][1]=='x' and mas[0][2]=='x':

        print('Крестики выиграли')

    if mas[1][0]=='x' and mas[1][1]=='x' and mas[1][2]=='x':

        print('Крестики выиграли')

    if mas[2][0]=='x' and mas[2][1]=='x' and mas[2][2]=='x':

        print('Крестики выиграли')

    #

    if mas[0][0]=='x' and mas[1][0]=='x' and mas[2][0]=='x':

        print('Крестики выиграли')

    if mas[0][1]=='x' and mas[1][1]=='x' and mas[2][1]=='x':

        print('Крестики выиграли')

    if mas[0][2]=='x' and mas[1][2]=='x' and mas[2][2]=='x':

        print('Крестики выиграли')

    #

    if mas[0][0]=='x' and mas[1][1]=='x' and mas[2][2]=='x':

        print('Крестики выиграли')

    if mas[0][2]=='x' and mas[1][1]=='x' and mas[2][0]=='x':

        print('Крестики выиграли')

    #o

    if mas[0][0]=='o' and mas[0][1]=='o' and mas[0][2]=='o':

        print('Нолики выиграли')

    if mas[1][0]=='o' and mas[1][1]=='o' and mas[1][2]=='o':

        print('Нолики выиграли')

    if mas[2][0]=='o' and mas[2][1]=='o' and mas[2][2]=='o':

        print('Нолики выиграли')

    #

    if mas[0][0]=='o' and mas[1][0]=='o' and mas[2][0]=='o':

        print('Нолики выиграли')

    if mas[0][1]=='o' and mas[1][1]=='o' and mas[2][1]=='o':

        print('Нолики выиграли')

    if mas[0][2]=='o' and mas[1][2]=='o' and mas[2][2]=='o':

        print('Нолики выиграли')

    #

    if mas[0][0]=='o' and mas[1][1]=='o' and mas[2][2]=='o':

        print('Нолики выиграли')

    if mas[0][2]=='o' and mas[1][1]=='o' and mas[2][0]=='o':

        print('Нолики выиграли')

    

while True:

    for event in pygame.event.get():

        if event.type==pygame.QUIT:

            pygame.quit()

            sys.exit(0)

        elif event.type==pygame.MOUSEBUTTONDOWN:

            x_mouse,y_mouse = pygame.mouse.get_pos()

            col = x_mouse//(size_block+margin)

            row = y_mouse//(size_block+margin)

            if mas[row][col]==0:

                if query%2==0:

                    mas[row][col]='x'

                else:

                    mas[row][col]='o'

            query+=1


    for row in range(3):

        for col in range(3):

            x = col*size_block+(col+1)*margin

            y = row*size_block+(row+1)*margin

            pygame.draw.rect(screen,blue,(x,y,size_block,size_block))

            

            if mas[row][col]=='x':

                pygame.draw.line(screen,red,(x+5,y+5),(x+size_block-5,y+size_block-5),8)

                pygame.draw.line(screen,red,(x+size_block-5,y+5),(x+5,y+size_block-5),8)

            elif mas[row][col]=='o':

                   pygame.draw.circle(screen,red,(x+size_block//2,y+size_block//2),size_block//2-3,8)

            #

            check_win(mas)

            if query == 9:

                print('Piece')


    pygame.display.update()

понедельник, 10 августа 2020 г.

Рыцари и лжецы Python

 На острове Буяне жили N человек, каждый из которых был либо рыцарем либо лжецом, встали в круг. Рыцари говорят только правду, лжецы всегда только лгут. Каждому человеку в кругу задали вопрос: «Кто ты и кто твой сосед слева: рыцарь или лжец?» При этом каждый человек сказал, что он – рыцарь. А ответы всех людей о левом соседе были записаны в следующем формате: 1 – рыцарь 0 – лжец. Все ответы записаны в строку через пробел. Последний спрошенный человек отвечал на вопрос о первом.

Написать программу, которая по ответам жителей определяет, какое количество рыцарей заведомо присутствует в круге.

Входные данные

Первое число ( 1 < N ≤ 255 ) - количество жителей. Следующие N чисел (0 или 1), разделенных пробелами - ответы жителей.

Примеры

Вход

Выход

4  

0  1  0  1    

2


N = int(input())

A_zutel=[]
A_zutel.append(1)
A_otv = []
i=0
r=0
while i<=N-1: 
    A_otv.append(int(input()))
    if A_zutel[i]==1:
        if A_otv[i]==1:
            A_zutel.append(1)
            #A_otv[i]=1
            r+=1
        else:
             A_zutel.append(0)
             #A_otv=0    
    else:
         if A_otv[i]==0:
            A_zutel.append(1)
            #A_otv[i]=1
            r+=1
         else:
             A_zutel.append(0)
             #A_otv=0
    i+=1
if A_zutel[N-1]==1:
    if A_otv[N-1]==1:
        if A_zutel[0]==1:
            print('Возможно')
    else:
        print('Error')
else:
    if A_otv[N-1]==1:
        if A_zutel[0]==1:
             print('Error')
    else:
        print('Возможно')
print(r)
print(A_zutel[N-1])
print(A_otv[N-1])
print(A_zutel)
print(A_otv)

Кривая Минковского на Python

 http://judge.mipt.ru/mipt_cs_on_python3/labs/lab8.html

import turtle
 
size = 4000
n = 3
 
def mink_curve(size, n):
    if n <= 0:
        turtle.forward(size)
        return
    
    mink_curve(size / 8, n - 1)
    turtle.left(90)
    mink_curve(size / 8, n - 1)
    turtle.right(90)
    mink_curve(size / 8, n - 1)
    turtle.right(90)
    mink_curve(size / 8, n - 1)
    mink_curve(size / 8, n - 1)
    turtle.left(90)
    mink_curve(size / 8, n - 1)
    turtle.left(90)
    mink_curve(size / 8, n - 1)
    turtle.right(90)
    mink_curve(size / 8, n - 1)
 
mink_curve(size, n)

Кривая и снежинка Коха на Python

 http://judge.mipt.ru/mipt_cs_on_python3/labs/lab8.html


import turtle


def kr_Koxa(x,depth):

    if depth==1:

        #turtle.left(60)

        return

    

    turtle.forward(x)

    turtle.left(60)

    turtle.forward(x)

    turtle.left(-120)

    turtle.forward(x)

    turtle.left(60)

    turtle.forward(x)

    if depth==5 or depth%3==0:

         turtle.left(60)

    elif depth%2==0:

        turtle.left(-120)

    return kr_Koxa(x,depth-1)


kr_Koxa(30,5)

воскресенье, 26 июля 2020 г.

Наибольший общий делитель Python

Необходимо найти НОД двух чисел, используя алгоритм Евклида.

Формат входных данных

На вход подаются два натуральных числа, по числу в новой строке.

Формат выходных данных

Одно число - НОД входных чисел.

Примеры

ВводВывод
30
18
6

ВводВывод
1071
462
21

a=int(input())
b=int(input())

while b!=0:
   a,b=b,a%b
   nod=a
print(nod)

https://www.youtube.com/watch?v=n9oXAOvP3Xs

Задача Первое число трибоначчи, превосходящее заданное на Python

Числа трибоначчи - последовательность целых чисел {t }, заданная с помощью рекуррентного соотношения: t = 0, t = 0, t = 1 , t n+3 = t + t n+1 + t n+2 Нужно найти номер первого числа трибоначчи, превосходящего заданное. Нумерация начинается с .

Формат входных данных

Одно целое число.

Формат выходных данных

Одно число — номер первого числа трибоначчи, превосходящее заданное во входных данных число.

Примеры

ВводВывод
10
7

ВводВывод
0
2

ВводВывод
13
8

a=int(input())

N=20
n=0
t=[0]*N
while n<N-3:
   t[0]=0
   t[1]=0
   t[2]=1
   t[n+3]=t[n]+t[n+1]+t[n+2]
   if t[n]>a:
      print(n)
      break
   n+=1

Определение типа треугольника на Python

Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.

Формат входных данных

Даны три натуральных числа – стороны треугольника. Каждое число вводится с новой строки.

Формат выходных данных

Необходимо вывести одно из слов: right для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, треугольника с такими сторонами не существует.

Примеры

ВводВывод
3
4
5
right

from math import *

a=int(input())
b=int(input())
c=int(input())
x=-(b*b-a*a-c*c)/(2*a*c)
y=(c+(b*b-a*a-c*c)/(2*c))/b
gama = pi-acos(x)-acos(y)
if a*a+b*b==c*c:
   print('right')
if gama<pi/2:
   print('acute')
elif gama>pi/2:
   print('obtuse')
if a+b<=c:
   print('impossible')

суббота, 25 июля 2020 г.

Задачa D-Обработка массива чисел на Python

На вход программа получает набор чисел, заканчивающихся решеткой. Вам требуется найти: среднее, максимальное и минимальное число в последовательности. Так же нужно вывести cумму остатков от деления суммы троек на последнее число тройки (каждые 3 введеных числа образуют тройку).
Для понимания рассмотрим пример входных данных: 1 2 3 4 5 6 среднее: (1 + 2 + 3 + 4 + 5 + 6) / 6 = 3.5 максимум: 6 минимум: 1 сумма остатков троек: (1 + 2 + 3) mod 3 + (4 + 5 + 6) mod 6 = 6 mod 3 + 15 mod 6 = 0 + 3 = 3
Среднее выводить, округлив до трех знаков после запятой. Для этого нужно использовать функцию round(x, 3)
Того ваша программа должна вывести: 3.5 6 1 3
Подумайте, имеет ли смысл хранить всю последовательность.

Формат входных данных

Последовательность чисел, заканчивающися '#'. Все числа от 1 до 100. Количество чисел в последовательности кратно трем. Одно число на строку.

Формат выходных данных

Четыре числа, разделенных пробелом.

Примеры

ВводВывод
1
2
3
4
5
6
#
3.5 6 1 3

#N=int(input())
A=[0]*100
k=0
x=0
sum=0
max=0
min=0
srednee=0
sum_3=0
i=0
while i!='#':
    #print(i)
    i=input()
    if i!='#':
       A[k]=int(i)
    else:
        break
    k+=1
min=A[0]
while x<=k-1:
    sum+=A[x]
    if (x==k-1):
        print(x)
        srednee=round(sum/(x+1), 3)
    if(A[x]>A[x+1]):
       max = A[x]
    else:
       max = A[x+1]
    if A[x]<min:
       min = A[x]
    if x+2<=k-1 and x%3==0:
        print(A[x+2])
        sum_3 = (A[x]+A[x+1]+A[x+2])%A[x+2]
    x+=1
print(srednee)
print(max)
print(min)
print(sum_3)

пятница, 24 июля 2020 г.

Задача A-Принадлежность точки кругу на Python

Даны координаты точки и радиус круга с центром в начале координат. Определить, принадлежит ли данная точка кругу. Напомним, что круг – это часть плоскости, состоящая из всех точек окружности и всех точек, лежащих внутри окружности.

Формат входных данных

Три целых числа на одной строке: координата точки по оси x, координата точки по оси y, радиус круга r (r > 0).

Формат выходных данных

Вывести "YES" без кавычек, если точка принадлежит кругу, "NO" без кавычек в противном случае.

Примеры

ВводВывод
0 0 1
YES

ВводВывод
-1 3 1
NO

x=int(input())
y=int(input())
r=int(input())
x0=0
y0=0
if x<=x0+r and y<=y0+r:
    print('YES')
else:
    print('NO')

Модель перевернутого маятника на Python

import graphics as gr
from math import *

window = gr.GraphWin("Модель перевернутого маятника", 800, 800)

len = 300

angle = pi/4

aVel = 0
aAcc = 0

aVel2=0
aAcc2=0

g = 9.8
m=0.5
M=1
b=m/(m+M)
j=m*len*len


#x=400
#y=50

x2=0
y2=0

def clear_window():
    rectangle = gr.Rectangle(gr.Point(0, 0), gr.Point(800, 800))
    rectangle.setFill('yellow')
    rectangle.draw(window)


while(True):
   clear_window()

   x1 = 400+len * sin(angle)
   y1 = 50+len * cos(angle)

   my_line = gr.Line(gr.Point(400+x2,360+y2), gr.Point(x1, y1))
   my_circle1 = gr.Circle(gr.Point(x1, y1), 10)
   #my_rectangle = gr.Rectangle(gr.Point(360, 360), gr.Point(440, 400))
   my_circle2 = gr.Circle(gr.Point(400+x2,360+y2), 20)

   my_line.draw(window)
   my_circle1.draw(window)
   my_circle2.draw(window)
   #my_rectangle.draw(window)

   angle+= aVel
   aVel+=aAcc
   aAcc = (g*sin(angle)+b*len*aVel*aVel*sin(angle)*cos(angle))/(len*(1+b*cos(angle)**2))
   x2+=aVel2
   aVel2+=aAcc2
   aAcc2=b*(len*aVel*aVel*sin(angle)-g*sin(angle)*cos(angle))/(1+b*cos(angle)**2)


https://habr.com/ru/post/472588/

Моделирование математического маятника на Python


import graphics as gr
from math import *

window = gr.GraphWin("Модель математического маятника", 800, 800)

len = 300
angle = pi/4
aVel = 0
aAcc = 0
g = 9.8
damping = 0.99

def clear_window():
    rectangle = gr.Rectangle(gr.Point(0, 0), gr.Point(800, 800))
    rectangle.setFill('yellow')
    rectangle.draw(window)


while(True):
   clear_window()

   x = 400+len * sin(angle)
   y = len * cos(angle)

   my_line = gr.Line(gr.Point(400,0), gr.Point(x, y))
   my_circle = gr.Circle(gr.Point(x, y), 10)

   my_line.draw(window)
   my_circle.draw(window)

   #aAcc = -0.01*sin(angle)
   aAcc = (-1*g/len)*sin(angle)
   aVel*=damping
   aVel+=aAcc
   angle+= aVel

http://judge.mipt.ru/mipt_cs_on_python3/labs/lab5.html

https://www.youtube.com/watch?v=9iaEqGOh5WM

среда, 22 июля 2020 г.

Задача I-Максимум последовательности на Python

Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение наибольшего элемента последовательности.
Числа, следующие за нулем, считывать не нужно.

Формат входных данных

Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит).

Формат выходных данных

Выведите ответ на задачу (одно число).
i=1
max=0
while i!=0:
       i=int(input())
       if i>max:
           max=i
print(max)

Задача H-Количество четных элементов на Python

Посчитать количество четных элементов в массиве целых чисел, заканчивающихся нулём. Сам ноль учитывать не надо.

Формат входных данных

Массив чисел, заканчивающийся нулём (каждое число с новой строки, ноль не входит в массив)

Формат выходных данных

Одно число — результат.
i=1
count=0
while i!=0:
       i=int(input())
       if i%2==0 and i != 0:
           count+=1
print(count)

вторник, 21 июля 2020 г.

Программирование задач Ейлера (задача 1) - Числа, кратные 3 или 5

Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23.
Найдите сумму всех чисел меньше 1000, кратных 3 или 5.


Программа на Питоне

n=int(input())
i=1
sum=0
while i<n:
   if i%3==0 or i%5==0:
         sum+=i
   i+=1
print(sum)

суббота, 14 марта 2020 г.

Я нажму на тормоза, позову тебя со мною

Я нажму на тормоза, позову тебя со мною,
Одеялом же любови, тепло я тебя укрою,
Звездочку сниму с небес, подарю тебе на счастье,
И отправимся мы в лес, по тропинке сквозь ненастья.

Бури, грезы, мы забудем, окунувшись с головою,
И подарим нашим детям, окрыленные душою,
Мир улыбок, счастья, детства, что напомнит в день тревоги,
Не одни же мы на свете, вдаль идут идут дороги.

О любви расскажем людям, чтоб они не забывали,
Первые же поцелуи, лаской мир весь согревали,
Мир тогда наполнит летом, крылья вырастут, как птицы,
Мы взмахнем и вдаль напиться полетим как две жар-птицы.

пятница, 13 марта 2020 г.

Исповедь пред Богом

Исповедовать пред Богом душу я свою хочу,
Покажите мне дорогу к благодатному лучу,
Что пронзит мое он сердце, возродит душевный строй,
Много должен я пред Богом, залечи пчелиный рой.

И грехи мои исправи, и прости обиды всем,
Причинил, теперь я каюсь, искупи грехи совсем.
Чашу я свою уж выпил, до горла наполнена,
Чадом отравил я душу, погаси его сперва.

Оживи Ты мое сердце, радости ему прибавь,
И расторгни сети ада, в воду лед его расплавь.
Не отринь молитвы этой, бедной нищенской ходьбой,
Окрыли его и к свету, дай ему любви покой.

Картина Волна

Картина по мастер-классу
Волна по мотивам Айвазовского
Масло, 30х40
Загрунтованное ДВП

суббота, 15 февраля 2020 г.

Рассказ о любви. Шум дождя. Автор Максим Драган

Рассказ о любви

Шум дождя

Встреча

Шел вечерний прохладный дождь. Но в ярко освященном концертном зале было тепло от светящихся ламп. Играла музыка. Пение то тише, то громче скользило по нотам, задавая ритм мелодии и музыке. Пела юная прекрасная девушка песню Шум дождя. И дождь на улице помогал песне, все было по-настоящему, и звуки оркестра и голос и перезвон падающих капель.
- Поздравляю вас, вы прекрасно поете, - прозвучал голос молодого человека, подарившего цветы певице, исполнившей песню.
Это был музыкальный вечер, проходивший в честь дедушки юной певицы, известного мирового итальянского оперного певца Джовани.
Вечер проходил в Пекине.
После концерта состоялся фуршет.
- Я знаю вас зовут Марина, это же русское имя, ваши корни из русских, - сказал тот самый молодой человек, подошедший к певице, стоявшей за столиком фуршета.
- Да, вы правы, только я из Украины. Моя мама оттуда, а папа итальянец. А вас как зовут? Я вас раньше с дедушкой не видела.
- Меня зовут Лукас.
- Значит будете Лаки, если можно.
- Можно, меня так все близкие называют.
- О чем была песня, которую вы пели, я плохо знаю итальянский?
- А вы откуда?
- Я из Австралии. Живу в Пекине. У меня здесь дом дедушки и бабушки остался, вот я здесь пока и живу. Я художник и писатель. А о вас я немного знаю. Так о чем же песня?
- А вы по мелодии не поняли?
- Давайте выйдем на балкон. Дождь уже закончился и появились звезды. Я так люблю этот свежий воздух, воздух моего детства, я же провел все детство здесь в Китае.
Они прошли по залу, играла музыка, некоторые пары танцевали.
- Давайте потанцуем, эта моя любимая песня - сказала Марина. - Если вы осмелитесь меня пригласить на танец.
- С вами с удовольствием, только я не очень умею танцевать.
- Я вас научу. Это не сложно.
И они закружились в медленном танце, прикасаясь застенчиво друг к другу.
Улица заиграла капелью, тихонько зашелестели листья.

четверг, 13 февраля 2020 г.

Сомнение в жизни верующего человека


Я не знаю правильно ли я рассуждаю, но считаю, что сомнение и полезно и важно для верующего человека. Тут надо разобраться, относительно чего сомнение возникает.  

Сомневаюсь ли я в существовании Бога? Сомневаюсь ли я в каком либо предмете веры, а может это маловерие или непонимание чего-либо. Сомневаюсь ли я в каком-то чуде вдруг происшедшем со мной. Сомневаюсь ли я в своих мыслях, поступках, как различить бесовский помысл от моих мыслей. 

Лично для меня надо ко всему относиться критично, искать во всем золотой середины, даже в вере в Бога, так как тогда можно поверить ложным чудесам, запоститься, замолиться, не есть, не спать, и считать, что поступаешь правильно. 

Конечно, если посмотреть на жизнь святых, то они и не ели и боролись со сном, и юродствовали. Да, хочется им подражать.

Но где же именно мой путь, какой мой путь ко спасению? Я этого точно не знаю. Хочется спасаться и спастись, хочется чтобы родные спаслись и весь мир. 

В данный момент я считаю, что все должны идти путем золотой середины, не впадая в крайности. Я слышал одну фразу, которой я не понимаю, что вера в Бога - это риск. Может быть и так. Пусть все будет по воле Божией, хотя и от нас многое зависит.

вторник, 11 февраля 2020 г.

Презентация веб-дизайна лендинга сайта охотника и рыболова


Презентация веб-дизайна сайта пекарни Свой хлеб


Сегодня мой день рождения

Сегодня мой день рождения,
День появления на свет,
День радости наших родителей,
И тех кого с нами нет.

Сегодня мой день рождения,
Накрыт праздничный стол,
Все поздравляют весело,
И радость эта на целый год.

Года идут, проходят не смелые,
Часть жизни уже прошла.
Только сердце остается спелое,
Его еще никто не сорвал.

Сегодня мой день рождения,
Но я благодарю всех вас,
Кто был со мной в эти годы познания,
Будьте такими же, пусть годы не старят нас.