среда, 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)