45.23K
Категория: ИнформатикаИнформатика

Игра «найди пару»

1.

Игра «найди пару»

2.

Исходные координаты карточек
import random
ev3 = EV3Brick()
a=15
koord = [[30, 30], [70, 30], [110, 30], [150, 30], [30, 80], [70, 80], [110, 80], [150, 80]] # координаты расположения карточек

3.

Случайное заполнение карточек
while True:
ev3.screen.clear()
for i in range(len(koord)): # для каждой пары координат
ev3.screen.draw_box( koord[i][0]-a , koord[i][1]+a , koord[i][0]+a , koord[i][1]-a , 0 , True, Color.BLACK) # строим карточки
symb = [[0, 0, 0, 0], [0, 0, 0, 0]] # заводим массив для случайного заполнения символами карточек
kart = [1, 1, 0, 0, 0, 0, 0, 0] # заводим вспомогательный массив-буфер для хранения символов карточек, которые нужно распределить
for i in range(len(symb)): # для каждой строки карточек
for j in range(len(symb[i])): # для каждой карточки в строке
ran = random.choice (kart) # генерируем случайное значение
symb[i][j] = ran # "заполняем" карточку символом
kart.remove(ran) # удаляем использованный символ из массива-буфера

4.

Отрисовка пар
for i in range(len(symb)):
for j in range(len(symb[i])):
if symb[i][j] == 1:
ev3.screen.draw_circle(30+j*40, 30+i*50, 7, False, Color.WHITE)
wait(200)
ev3.screen.draw_circle(30+j*40, 30+i*50, 7, False, Color.BLACK)
else:
ev3.screen.draw_circle(30+j*40, 30+i*50, 4, False, Color.WHITE)
wait(200)
ev3.screen.draw_circle(30+j*40, 30+i*50, 4, False, Color.BLACK)

5.

Исходные координаты рамок
b = 19 # размер рамки вокруг карточки
x = 30 # устанавливаем изначальные координаты рамки
y = 30 # устанавливаем изначальные координаты рамки
i = 0 # устанавливаем индекс первой карточки
j = 0 # устанавливаем индекс первой карточки

6.

Перемещение рамок по карточкам
while True:
ev3.screen.draw_box(x-b , y+b , x+b , y-b , 0 , False, Color.BLACK) # рисуем рамку
if ev3.buttons.pressed() == [Button.RIGHT]: # если нажали кнопку вправо
ev3.screen.draw_box(x-b , y+b , x+b , y-b , 0 , False, Color.WHITE) # стираем рамку
x += 40 # сдвигаем рамку вправо на одну карточку
j += 1 # "переключаемся" на следующую карточку
if x > 150: # если выходим за пределы последней в ряду карточки
x -= 40 # возвращаем рамку на последнюю карточку
j -= 1 # "переключаемся" на предыдущую карточку
wait(300) # ждем отжатия кнопки 0,3 секунды
if ev3.buttons.pressed() == [Button.LEFT]: # если нажали кнопку влево
ev3.screen.draw_box(x-b , y+b , x+b , y-b , 0 , False, Color.WHITE) # стираем рамку
x -= 40 # сдвигаем рамку влево на одну карточку
j -= 1 # "переключаемся" на следующую карточку
if x < 30: # если выходим за пределы последней в ряду карточки
x += 40 # возвращаем рамку на последнюю карточку
j += 1 # "переключаемся" на предыдущую карточку
wait(300) # ждем отжатия кнопки 0,3 секунды

7.

Перемещение рамок по карточкам
if ev3.buttons.pressed() == [Button.DOWN]: # если нажали кнопку вниз
ev3.screen.draw_box(x-b , y+b , x+b , y-b , 0 , False, Color.WHITE) # стираем рамку
y += 50 # сдвигаем рамку вниз на одну карточку
i = 1 # "переключаемся" на нижнюю карточку
if y > 80: # если выходим за пределы последней в ряду карточки
y -= 50 # возвращаем рамку на последнюю карточку
wait(300) # ждем отжатия кнопки 0,3 секунды
if ev3.buttons.pressed() == [Button.UP]: # если нажали кнопку вверх
ev3.screen.draw_box(x-b , y+b , x+b , y-b , 0 , False, Color.WHITE) # стираем рамку
y -= 50 # сдвигаем рамку вверх на одну карточку
i = 0 # "переключаемся" на верхнюю карточку
if y < 30: # если выходим за пределы последней в ряду карточки
y += 50 # возвращаем рамку на последнюю карточку
wait(300) # ждем отжатия кнопки 0,3 секунды

8.

Выбор пары
if ev3.buttons.pressed() == [Button.CENTER]: # если нажали центральную кнопку
if symb[i, j] ==1:
ev3.screen.draw_circle(30+j*40, 30+i*50, 7, False, Color.WHITE)
status +=1
if status == 2:
ev3.screen.clear()
ev3.screen.text(10, 10, "Victory!")
wait(3000)
break
else:
ev3.screen.clear()
ev3.screen.text(10, 10, "You lose!")
break
wait(300)
English     Русский Правила