Python: пишем игру «успей нажать клавишу»

В общем в рамках компании по попытке обучения одного товарища программированию, написал небольшую консольную игру, дабы с ним попробовать её воспроизвести.

Суть игры: компьютер загадывает случайную кнопку из списка и время за которое игрок должен успеть её нажать. Если игрок успевает нажать — ему добавляется балл.

Итак, для написания понадобится знать что такое циклы, массивы, случайные числа. Использовать будем модули keyboard, random и time

  • keyboard — для получения нажатий клавиш на клавиатуре
  • random — для получения случайных числел
  • time — для расчета времени реакции

Для начала определим одномерный массив, в котором перечислим доступные для выбора компьютером клавиши.

keys=["q","w","e","r","t","y"];

Далее создадим бесконечный цикл, внутри которого будем выбирать случайную клавишу для нажатия:

import keyboard
import random
import time

keys=["q","w","e","r","t","y"];
while True:
    key_to_press=keys[random.randint(0, len(keys)-1)]
    print(f"-нажми кнопку {key_to_press}")

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

import keyboard
import random
import time

keys=["q","w","e","r","t","y"];
while True:
    key_to_press=keys[random.randint(0, len(keys)-1)]
    time_to_press=random.randint(1, 3)
    print(f"Нажми кнопку {key_to_press} за {time_to_press} секунды");

Что дальше? А дальше нам нужно объявить еще один цикл и ждать пока не истечет время отведенное для того чтобы игрок нажал кнопку. Для этого, перед началом цикла запомним время начала игры, и внутри цикла постоянно будем проверять, на сколько оно отличается от текущего времени:

import keyboard
import random
import time

keys=["q","w","e","r","t","y"];
while True:
    key_to_press=keys[random.randint(0, len(keys)-1)]
    time_to_press=random.randint(1, 3) # время в секундах ожидания реакции
    print(f"Нажми кнопку {key_to_press} за {time_to_press} секунды");
    start_time=time.time() # запоминаем время начала игры
    while True:
      if (time.time()-start_time>time_to_press): # разница между текущее временем и временем начала игры больше чем time_to_press, то игрок не успел нажать кнопку
         print("- ты проиграл, не успел нажать!")
         break;	

Теперь добавим чуточку интерактивности, а именно проверку, «а не нажата ли клавиша загаданная компьютером»:

import keyboard
import random
import time

keys=["q","w","e","r","t","y"];
while True:
    key_to_press=keys[random.randint(0, len(keys)-1)]
    time_to_press=random.randint(1, 3) # время в секундах ожидания реакции
    print(f"Нажми кнопку {key_to_press} за {time_to_press} секунды");
    start_time=time.time() # запоминаем время начала игры
    while True:
      if (time.time()-start_time>time_to_press): # разница между текущее временем и временем начала игры больше чем time_to_press, то игрок не успел нажать кнопку
         print("- ты проиграл, не успел нажать!")
         break;	
     if keyboard.is_pressed(key_to_press):
        print(f'-Ты выиграл!')
        break

Ну и осталось чуток прилизать код, добавив возможность подсчета кто круче, компьютер или игрок:

import keyboard
import random
import time

# создадим массив с доступными клавишами
keys=["q","w","e","r","t","y"];
count_win_gamer=0
count_win_pc=0
while True:
    start_time=time.time()
    key_to_press=keys[random.randint(0, len(keys)-1)]
    time_to_press=random.randint(1, 3)
    print(f"Нажми кнопку {key_to_press} за {time_to_press} секунды");
    win=False;
    while True:
        if (time.time()-start_time>time_to_press):
            print(f"- ты проиграл уже {count_win_pc} , не успел нажать! Общий счёт: {count_win_pc}/{count_win_gamer} (ты)")
            count_win_pc = count_win_pc + 1
            break;
        if keyboard.is_pressed(key_to_press):
            count_win_gamer=count_win_gamer+1
            print(f'-Ты выиграл уже {count_win_gamer} раз!  Общий счёт: {count_win_pc}/{count_win_gamer} (ты)')
            win = True;
            break

Ход игры:

1с: Число прописью без нулей

Задача: вывести число прописью, число должно быть целым

Решение:

ЧислоПрописью(ПроцентВознаграждения,"НП=Ложь",",,,,,,,,0")

Ну и бонусом, перечислю наиболее распространенные варианты использования.

Вывод рублей и копеек:

ЧислоПрописью(итвсегосндс,"Л=ru_RU; ДП=Ложь","рубль, рубля, рублей, м, копейка, копейки, копеек, ж" ); 

Вывод процентов:

ЧислоПрописью(ПроцентВознаграждения,"НП=Истина","процент,процента,процентов,,,,,,0")

WordPress грузит ресурсы по http вместо https

После переноса одного из сайтов на wordpress с одного сервера на другой, столкнулся с проблемой, что все ресурсы (css, js и т.п.) грузятся по протоколу http, хотя основной сайт грузится по https (загрузка http вместо https). Изменение и проверка всего и вся в БД результата не дало. Помог рецепт добавить в wp-config.php строчку:

$_SERVER['HTTPS'] = 'on';

Заработало. Что такое было, не понятно.. Точнее понятно что это настройки apache, но вот какие, так обнаружить и не удалось.

P.S. Кроме того, естественно была проведена работа по замене всех ссылок вида http на https внутри БД wordpress. Однако это не помогло в моём случае.

Токсичность сообщества ru.stackoverflow.com

Ежики кололись, плакали но продолжали есть кактус (с), или токсичность сообщества программистов на ru.stackoverflow.com

Уже несколько раз замечал, что в ru сообщества, просто нельзя ни задавать вопросы, ни отвечать на них — минусуют, хамят, лелеют и тешат чувство собственной значимости

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

1С Бухгалтерия 3.0.121.31: отправка письма

В данной версии БСП используемой в БУх, отправка письма производится так:

	тело="Прювет";
	ПараметрыПисьма = Новый Структура("Кому, Тема, Тело,ТипТекста", объект.email, "Абырвалг", тело,"HTML");
	РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(),ПараметрыПисьма);
1 38 39 40 41 42 308