Перезапустить программу это как

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

person Julen Uranga schedule 13.10.2016 source источник

Что бы вы ни делали, не называйте main() в своем коде. — person NathanOliver nbsp schedule 13.10.2016
Вы рассматривали возможность использования петли? — person Baum mit Augen nbsp schedule 13.10.2016

Какая платформа? Если это что-то отдаленно похожее на POSIX, вы можете взглянуть на семейство функций exec() . — person Toby Speight nbsp schedule 13.10.2016

Какова ваша цель при перезапуске программы? Чего ты хочешь достичь? Это может помочь в определении наилучшего способа перезапуска приложения. — person Jordan Melo nbsp schedule 13.10.2016

А как насчет простого использования цикла? Пока вы не используете глобальные переменные, вы можете изменить это значение. — person Asu nbsp schedule 13.10.2016

Невозможно запустить это приложение на вашем ПК в Windows 11 и Windows 10 (Решение)

Это Linux, работающий на плате Raspberry Pi. Это бортовая встроенная система поезда, которая определяет местонахождение поезда (IMU, GPS, GSM / GPRS-модем), и мне нужно перезапустить после получения пропущенного вызова. — person Julen Uranga nbsp schedule 14.10.2016

То, что я разрабатываю, — это всего лишь прототип, поэтому он не будет реализован в поезде в коммерческих целях. Это часть исследовательского проекта. — person Julen Uranga nbsp schedule 14.10.2016

Ответы (9)

Если вам действительно нужно перезапустить всю программу (т.е. «закрыть» и «открыть» снова), «правильный» способ — создать отдельную программу с единственной целью перезапустить вашу основную. AFAIK многие приложения с функцией автоматического обновления работают таким образом. Поэтому, когда вам нужно перезапустить основную программу, вы просто вызываете программу «перезапуск» и выходите.

person SingerOfTheFall schedule 13.10.2016

Так что было бы достаточно иметь две программы, которые вызывают друг друга и выходят, когда требуется перезапуск, не так ли? — person Julen Uranga; 13.10.2016

Они не звонят друг другу; вызывающий — это, по сути, цикл, который вызывает второй, ожидает его выхода, а затем вызывает его снова. Настоящая программа ничего не знает о вызывающем абоненте; он просто выходит. — person chepner; 13.10.2016

И рабочий может указать своим кодом выхода, хочет ли он быть перезапущенным сторожевым псом. — person Carsten S; 13.10.2016

Почему бы просто не запустить еще один экземпляр вашей программы, возможно, указав ему флаг, указывающий, что это перезапуск? — person David Schwartz; 14.10.2016

Хорошо! В настоящее время я автоматически выполняю свою программу во время загрузки с помощью сценария, поэтому я могу изменить ее и перезапустить программу (выполнить ее снова) при поступлении определенного кода выхода. Я прав? — person Julen Uranga; 14.10.2016

Невозможно запустить это приложение на вашем ПК в Windows 10

Ответ правильный, но я просто хочу подчеркнуть, что вам не обязательно иметь отдельную программу (или сценарий), лежащую где-либо на диске. Вы можете динамически сгенерировать его в памяти, создать для него процесс, который ожидает закрытия текущего дескриптора процесса, а затем снова запускает ваше приложение, а затем закрывается. Я понятия не имею, насколько сложно это может быть в C ++, но я уверен, что это возможно, учитывая, что вы можете легко сделать это на C # или Java. — person Archeg; 14.10.2016

Вы можете использовать цикл в своей функции main :

int main() < while(!i_want_to_exit_now) < // code >>
Или, если вы действительно хотите перезапустить программу, запустите ее с привязи:

где 42 — это код возврата, означающий «перезагрузите, пожалуйста». Тогда внутри программы ваша restart функция будет выглядеть так:

void restart()
person krzaq schedule 13.10.2016

Первое решение не сработает, если программа плохо написана. Например, если он содержит утечку памяти, он не будет освобожден простым прохождением цикла. Однако другое решение, которое вы предоставили, справится даже с такими проблемами. — person Humam Helfawi; 13.10.2016

Это наиболее конкретный ответ. Он должен быть отмечен как ответ. — person Charles; 13.10.2016
следует использовать -eq вместо -e — person aliep; 04.12.2020

Имейте в виду, что многие вещи выполняются до main() . Например, у вас может быть код типа class Klass < . >klass; (он вызывает конструктор Klass при загрузке) в библиотеках или даже в вашем собственном коде, который не будет перезапущен с помощью цикла в main() . Код процесса динамической библиотеки и присоединения потока ( DllMain() в Windows) также часто выполняется до main() . Следовательно, настоящая процедура перезапуска требует exit() и отдельной программы или сценария перезапуска, как предлагается. — person Paulo Carvalho; 09.05.2021

В Unicies или где-либо еще у вас есть execve , и он работает как на странице руководства, вы можете просто . убей меня за использование atoi , потому что это вообще ужасно, за исключением такого рода случаев.

#include #include #include int main (int argc, char** argv) < (void) argc; printf(«arg: %sn», argv[1]); int count = atoi(argv[1]); if ( getchar() == ‘y’ ) < ++count; char buf[20]; sprintf(buf, «%d», count); char* newargv[3]; newargv[0] = argv[0]; newargv[1] = buf; newargv[2] = NULL; execve(argv[0], newargv, NULL); >return count; >
$ ./res 1 arg: 1 y arg: 2 y arg: 3 y arg: 4 y arg: 5 y arg: 6 y arg: 7 n 7 | $
person cat schedule 13.10.2016
А как насчет ресурсов, которые могли быть приобретены? — person Carsten S; 13.10.2016

Может быть поучительно strace вариант этого. Я написал тот, который завершается: int main(int argc, char** argv) < (void)argc; printf(«arg: %sn», argv[1]); int count = atoi(argv[1]); if (count >0) < char buf[20]; sprintf(buf, «%d», count-1); argv[1] = buf; execv(argv[0], argv); >return count; > . Вы можете видеть запуск (загрузка libc и т. Д.) Каждый раз. — person Toby Speight; 14.10.2016

Не делайте этого в контексте безопасности. Это уязвимо для запуска любого кода, который может захотеть запустить злоумышленник. — person Daniel Jour; 14.10.2016

Это вопрос, очень специфичный для ОС. В Windows вы можете использовать API перезапуска приложения или MFC Restart Manager. В Linux вы могли сделать exec() Однако в большинстве случаев есть лучшее решение. Скорее всего, вам лучше использовать цикл, как это предлагается в других ответах.

person BlueRaja — Danny Pflughoeft schedule 13.10.2016

Это звучит как неправильный подход, как будто все ваше состояние является глобальным, и поэтому единственный четкий метод, который у вас есть для сброса всего (кроме ручного присвоения значений «по умолчанию» каждой переменной), — это перезапустить всю программу. Вместо этого ваше состояние должно храниться в объектах (типа класса или чего-то еще). Затем вы можете создавать и уничтожать эти объекты, когда захотите. Каждый новый объект имеет новое состояние со значениями «по умолчанию». Не борись с C ++; используй это!

Читайте также:
Где можно посмотреть программы в записи

person Lightness Races in Orbit schedule 14.10.2016
Вероятно, вам понадобится цикл:

int main() < while (true) < //. Program. >>

Каждый раз, когда вам нужно перезапустить, вызывайте continue; в цикле, а для завершения вашей программы используйте break; .

person Arnav Borborah schedule 13.10.2016
Не рекомендовано кем? — person StoryTeller — Unslander Monica; 13.10.2016

У вас есть ссылка? Рассуждение неплохо было бы прочитать. И может усилить ваш ответ. — person StoryTeller — Unslander Monica; 13.10.2016

Это один парень с одним мнением. Утверждать, что эти функции не рекомендуются на основании этого мнения, бесполезно. Лично я не согласен с Питером, но его мнение справедливо; это просто не единственный. — person Lightness Races in Orbit; 14.10.2016

Совершенно никаких проблем. 🙂 — person Lightness Races in Orbit; 14.10.2016

Когда я разрабатываю системы реального времени, я обычно использую «производную main ()», где я пишу весь код, вызываемый из реальной main (), например: Программа main.cpp:

int main (int argc, char *argv[]) < while (true) < if (programMain(argc, argv) == 1) break; >>
Programmain.cpp, где написан весь код:
int programMain(int argc, char *argv[]) < // Do whatever — the main logic goes here // When you need to restart the program, call return 0; // When you need to exit the program, call return 1; >

Таким образом, каждый раз, когда мы решаем выйти из программы, программа будет перезапущена.

Подробно: все переменные, глобальные переменные и логика должны быть записаны внутри programMain() — внутри «main()» ничего, кроме элемента управления перезапуском. Этот подход работает как в системах Linux, так и в Windows.

person Mendes schedule 14.10.2016

Разве это не было бы просто циклическим возвратом и вызовом programMain снова? Вам понадобится что-нибудь, чтобы сломать внешний цикл while. Я не специалист по C ++, но я был бы удивлен, если бы это сделал код возврата 1, тем более что вы его нигде не используете . — person Alex; 14.10.2016

Да, идея состоит в том, чтобы снова вызвать programMain() , перезапустив всю логику. Действительно, return 1 может выйти из цикла. Отредактировано . — person Mendes; 14.10.2016

Теперь яснее. Хотя я лично все же предпочел бы подход с отдельной мини-программой для полного / чистого перезапуска . — person Alex; 14.10.2016

Мне кажется, вы задаете неправильный вопрос, потому что недостаточно разбираетесь в кодировании, чтобы задать правильный вопрос. Похоже, вы просите о том, как написать код, в котором при пропущенном вызове он возвращается в исходное состояние и перезапускает всю последовательность вызова / местоположения. В этом случае вам нужно использовать конечный автомат.

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

Из этого должно быть ясно, что вы не на самом деле хотите убить и перезапустить свою программу, потому что тогда вы получите именно то поведение, которое вам не нужно. С конечным автоматом у вас может быть одно состояние инициализации для холодного запуска, когда система только что была включена, и второе состояние инициализации для горячего перезапуска. Да и 6 потоков — это не очень много! 🙂

person Graham schedule 14.10.2016

Конечно, мне есть чему поучиться и улучшить. Я не хочу перезапускать всю последовательность вызовов / местоположений, я хочу перезапустить все приложение, 7 файлов, смещение датчиков . Я действительно хочу перезапустить свою программу, потому что это именно то поведение, которое мне нужно. Выполнение горячего перезапуска стоит для меня слишком много кода и усилий, и я ничего от этого не выиграю, просто еще больше усложняю код. — person Julen Uranga; 14.10.2016

Вы хотите закрыть файлы, а затем снова открыть их и повторно инициализировать переменные? Затем закройте файлы после пропущенного звонка. И используйте цикл, чтобы вернуться и снова выполнить свою инициализацию. Я не пытаюсь показаться грубым, но нет ситуации, в которой перезапуск приложения был бы разумной альтернативой простому циклу. Если это универсальный проект, вы БУДЕТ получить более низкую оценку, если продемонстрируете отсутствие технических способностей. Я не пытаюсь показаться грубым, я пытаюсь указать вам на то, что дает вам хорошую оценку. 🙂 — person Graham; 14.10.2016

В зависимости от того, что вы подразумеваете под «перезапуском» программы, я вижу несколько простых решений. Один из них — встроить всю вашу программу в некоторый класс «Program», который, по сути, предоставляет некоторый цикл, в котором есть ваша правильная программа.

Когда вам нужно перезапустить программу, вы вызываете статический общедоступный метод Restart, который снова запускает цикл. Вы также можете попытаться сделать системный вызов, который снова запустит вашу программу и завершит работу.

Как было предложено в другом ответе, вы можете создать программу-оболочку для этой единственной цели (и проверить код возврата, чтобы узнать, нужно ли выйти или перезапустить). Другой простой вариант — использовать goto . Я знаю, что люди будут ненавидеть меня даже за то, что я упомянул об этом, но давайте посмотрим правде в глаза: мы хотим делать простую программу, а не использовать красивый шаблон.

Переход назад гарантирует уничтожение, чтобы вы могли создать программа с меткой в ​​начале и некоторая функция «Restart», которая просто возвращается в начало. Какой бы вариант вы ни выбрали, хорошо задокументируйте его, чтобы другие (или вы в будущем) использовали на один WTF меньше. PS. Как упоминалось в alain, goto не будет уничтожать ни глобальные, ни статические объекты, то же самое относится и к классу включения. Поэтому любой подход, который не включает запуск новой программы вместо текущей, должен либо воздерживаться от использования глобальных / статических переменных, либо предпринимать надлежащие действия для их повторной установки (хотя это может быть утомительно, как и при добавлении каждой статической / глобальной переменной). , вам необходимо изменить процедуру перезапуска).

Источник: questu.ru

Как перезапустить программу C++

Напишите свой вопрос здесь.
может ли кто — нибудь сказать мне, как перезапустить программу, когда я набираю R, если появилась ошибка ?

#include #include using namespace std; void restart() < /////. >int main() < float fat, cal = -1, gram = -1 ,R ; float per; cout > cal; cout > gram; fat = 9 * gram; per = (fat / cal) * 100; if (per > 100 || cal < 0 || fat < 0) < cout > R; restart(); ///// problem _i need to restart the program here if (per >= 30) < cout else < cout system(«pause»); return 0; >

Читайте также:
Инструкция по программе смета

Что я уже пробовал:

если (per > 100 || cal < 0 || fat < 0)

restart(); ///// проблема _ мне нужно перезапустить программу здесь >

Понятия не имею ,что делать, я все еще новичок в попытке выучить c++

4 Ответов

GKP1992

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

Из того, что я понимаю, вам нужно вызвать метод, который снова принимает cal и gram, если пользователь нажимает клавишу «R». Я бы предложил написать другой метод, который делает это, и вызвать его в основной функции.

Некоторые проблемы, которые я заметил, R не должен быть переменной с плавающей запятой, определяющей ее как строку или символ. Также линия

per = (fat / cal) * 100;

будет выдано исключение divide by zero, если пользователь вводит ноль.

А для вашей задачи достаточно написать рекурсивную функцию.

int main() < Calculate(); >private void Calculate() < float fat, cal = -1, gram = -1; char R; float per; cout > cal; cout > gram; fat = 9 * gram; if(cal!= 0) < per = (fat / cal) * 100; >if (per > 100 || cal < 0 || fat < 0) < cout > R; if(R == ‘R’ || R == ‘r’) < Calculate(); //Calls the method all over again if the user inputs R. >> if (per >= 30) < cout else < cout >

Jochen Arndt

Нет необходимости перезапускать приложение. Просто используйте цикл while:

bool bRedo = false; do < cout > cal; cout > gram; fat = 9 * gram; // Zero cal is an error too and would result in a division by zero // Therefore it must be checked before performing the division if (cal 1) < cout else per = (fat / cal) * 100; > while (bRedo);

Patrice T

Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию.

#include #include using namespace std; void restart() < /////. >int main() < float fat, cal = -1, gram = -1 ,R ; float per; cout > cal; cout > gram; fat = 9 * gram; per = (fat / cal) * 100; if (per > 100 || cal < 0 || fat < 0) < cout > R; restart(); ///// problem _i need to restart the program here if (per >= 30) < cout else < cout system(«pause»); return 0; >

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]

может ли кто — нибудь сказать мне, как перезапустить программу, когда я набираю R, если появилась ошибка ?

Как есть, нет никакой концепции вызова процедуры, которая перезапустит программу на языке Си.
Вы можете использовать метку и перейти к этой метке (она же: restart: и goto restart; ), но я рекомендую не использовать его в качестве ученика, так как это плохая привычка использовать его так рано.
Вы бы лучше подумали об использовании петлевой структуры.

Member 13509203

Большое спасибо ,ребята!, ценю вашу помощь всем .

phil.o

Пожалуйста, не публикуйте свои поздравления в новом ответе.
Вы можете добавить комментарии к предложенным решениям, или, что еще лучше, вы можете дать им справедливую оценку и принять их формально.
Любезно 🙂

Источник: automizer.ru

Как перезапустить программу на основе ввода пользователя?

Я пытаюсь перезапустить программу, используя if-тест на основе ввода от пользователя. Этот код не работает, но он примерно соответствует мне:

answer = str(raw_input(‘Run again? (y/n): ‘)) if answer == ‘n’: print ‘Goodbye’ break elif answer == ‘y’: #restart_program. else: print ‘Invalid input.’

  • если вы ответите y — программа перезагрузится сверху
  • если вы ответите n — конец программы (эта часть работает)
  • Если вы введете что-нибудь еще, оно должно напечатать «недопустимый ввод». введите y или n. ‘или что-то еще, и снова спросите вас о новом вводе.

Я действительно приблизился к решению с циклом «while true», но программа либо просто перезагружается, независимо от того, что вы нажимаете (кроме n), либо выходит из нее независимо от того, что вы нажимаете (кроме y). Любые идеи?

user2077662 16 фев. 2013, в 06:30
Поделиться
Поделиться:

6 ответов

Лучший ответ

while True: # main program while True: answer = raw_input(‘Run again? (y/n): ‘) if answer in (‘y’, ‘n’): break print ‘Invalid input.’ if answer == ‘y’: continue else: print ‘Goodbye’ break

Внутренний цикл while цикл, пока вход не будет ‘y’ или ‘n’ . Если входной сигнал ‘y’ , цикл while снова запускается (ключевое слово continue пропускает оставшийся код и переходит прямо к следующей итерации). Если вход ‘n’ , программа заканчивается.

Также обратите внимание, что преобразование raw_input в str() является избыточным, так как raw_input уже возвращает строку.

Volatility 16 фев. 2013, в 06:15
Поделиться

Эта строка безоговорочно перезапускает запущенную программу с нуля:

os.execl(sys.executable, sys.executable, *sys.argv)

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

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

jlliagre 14 май 2015, в 21:26
Поделиться
Это не работает в Windows, если Python установлен в пути с пробелами
Beefster 17 фев. 2017, в 23:14

Elad Avron 12 дек. 2017, в 21:05
Beefster 14 дек. 2017, в 17:19
Elad Avron 14 дек. 2017, в 20:54
Beefster 14 дек.

2017, в 22:21
Elad Avron 15 дек. 2017, в 10:21
Показать ещё 4 комментария

Вы можете сделать это просто через пользовательские функции. Код выглядит примерно так:

def script() restart = raw_input(«Would you like to restart this program?») if restart == «yes» or restart == «y»: script() if restart == «n» or restart == «no»: print «Script terminating. Goodbye.» script()

Конечно, вы можете многое изменить здесь. Что сказано, что script будет принимать как допустимый вход, имена переменных и функций. Вы можете просто вложить всю программу в пользовательскую функцию (конечно, вы должны дать все внутри дополнительного отступа) и перезапустить ее в любое время с помощью этой строки кода: myfunctionname() . Подробнее об этом здесь.

It’s Willem 10 июнь 2015, в 16:19
Поделиться
Конечно, дайте мне знать, если это не удастся, и я постараюсь исправить
It’s Willem 10 июнь 2015, в 15:34

Использование одного цикла while:

Читайте также:
Топ программ для анимирования на Андроид

In [1]: start = 1 . . while True: . if start != 1: . do_run = raw_input(‘Restart? y/n:’) . if do_run == ‘y’: . pass . elif do_run == ‘n’: . break . else: . print ‘Invalid input’ . continue . . print ‘Doing stuff. ‘ . . if start == 1: . start = 0 . Doing stuff. Restart? y/n:y Doing stuff. Restart? y/n:f Invalid input Restart? y/n:n In [2]:
root 16 фев. 2013, в 06:41
Поделиться

Хорошо-хорошо.

Справедливо. Вам не нужны 2 цикла while — но я все же думаю, что так будет чище 🙂 — Мне действительно понравилось мое решение для декоратора, но это может быть немного сложнее для такого вопроса .

mgilson 16 фев. 2013, в 05:24
root 16 фев. 2013, в 05:26
Хорошее использование цикла while
Fony Lew 03 дек.

2018, в 10:18
Показать ещё 1 комментарий

Здесь интересный способ сделать это с помощью decorator:

В конечном счете, я думаю, вам нужно 2 цикла. Вам нужно, чтобы одна петля бракала часть, которая запрашивает ответ, чтобы вы могли снова запросить, если пользователь дал плохой ввод. Вам понадобится секунда, которая будет проверять, что текущий ответ ‘y’ и продолжать работать с кодом, пока ответ не будет ‘y’ .

mgilson 16 фев. 2013, в 05:29
Поделиться

Я создаю эту программу:

import pygame, sys, time, random, easygui skier_images = [«skier_down.png», «skier_right1.png», «skier_right2.png», «skier_left2.png», «skier_left1.png»] class SkierClass(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(«skier_down.png») self.rect = self.image.get_rect() self.rect.center = [320, 100] self.angle = 0 def turn(self, direction): self.angle = self.angle + direction if self.angle < -2: self.angle = -2 if self.angle >2: self.angle = 2 center = self.rect.center self.image = pygame.image.load(skier_images[self.angle]) self.rect = self.image.get_rect() self.rect.center = center speed = [self.angle, 6 — abs(self.angle) * 2] return speed def move(self,speed): self.rect.centerx = self.rect.centerx + speed[0] if self.rect.centerx < 20: self.rect.centerx = 20 if self.rect.centerx >620: self.rect.centerx = 620 class ObstacleClass(pygame.sprite.Sprite): def __init__(self,image_file, location, type): pygame.sprite.Sprite.__init__(self) self.image_file = image_file self.image = pygame.image.load(image_file) self.location = location self.rect = self.image.get_rect() self.rect.center = location self.type = type self.passed = False def scroll(self, t_ptr): self.rect.centery = self.location[1] — t_ptr def create_map(start, end): obstacles = pygame.sprite.Group() gates = pygame.sprite.Group() locations = [] for i in range(10): row = random.randint(start, end) col = random.randint(0, 9) location = [col * 64 + 20, row * 64 + 20] if not (location in locations) : locations.append(location) type = random.choice([«tree», «flag»]) if type == «tree»: img = «skier_tree.png» elif type == «flag»: img = «skier_flag.png» obstacle = ObstacleClass(img, location, type) obstacles.add(obstacle) return obstacles def animate(): screen.fill([255,255,255]) pygame.display.update(obstacles.draw(screen)) screen.blit(skier.image, skier.rect) screen.blit(score_text, [10,10]) pygame.display.flip() def updateObstacleGroup(map0, map1): obstacles = pygame.sprite.Group() for ob in map0: obstacles.add(ob) for ob in map1: obstacles.add(ob) return obstacles pygame.init() screen = pygame.display.set_mode([640,640]) clock = pygame.time.Clock() skier = SkierClass() speed = [0, 6] map_position = 0 points = 0 map0 = create_map(20, 29) map1 = create_map(10, 19) activeMap = 0 obstacles = updateObstacleGroup(map0, map1) font = pygame.font.Font(None, 50) a = True while a: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: speed = skier.turn(-1) elif event.key == pygame.K_RIGHT: speed = skier.turn(1) skier.move(speed) map_position += speed[1] if map_position >= 640 and activeMap == 0: activeMap = 1 map0 = create_map(20, 29) obstacles = updateObstacleGroup(map0, map1) if map_position >=1280 and activeMap == 1: activeMap = 0 for ob in map0: ob.location[1] = ob.location[1] — 1280 map_position = map_position — 1280 map1 = create_map(10, 19) obstacles = updateObstacleGroup(map0, map1) for obstacle in obstacles: obstacle.scroll(map_position) hit = pygame.sprite.spritecollide(skier, obstacles, False) if hit: if hit[0].type == «tree» and not hit[0].passed: skier.image = pygame.image.load(«skier_crash.png») easygui.msgbox(msg=»OOPS. «) choice = easygui.buttonbox(«Do you want to play again?», «Play», («Yes», «No»)) if choice == «Yes»: skier = SkierClass() speed = [0, 6] map_position = 0 points = 0 map0 = create_map(20, 29) map1 = create_map(10, 19) activeMap = 0 obstacles = updateObstacleGroup(map0, map1) elif choice == «No»: a = False quit() elif hit[0].type == «flag» and not hit[0].passed: points += 10 obstacles.remove(hit[0]) score_text = font.render(«Score: » + str(points), 1, (0, 0, 0)) animate()
user4592624 30 март 2015, в 01:28
Поделиться
Это слишком, слишком долго, чтобы кратко объяснить, как перезапустить программу.
Nathan Tuggy 30 март 2015, в 01:07

Ещё вопросы

  • 0 Создание общего приложения ilbrary с wxWidgets (с помощью pthreads)
  • 0 Первый щелчок по выбору не выбирает значение
  • 1 SQLite, если вход существует в базе данных, пропустить или перезаписать существующий
  • 1 слушатель push-уведомлений sw-precache
  • 1 java-связывание со свободной функцией c: как правильно освободить объект
  • 0 Как расширить многоуровневые div с помощью javascript и сохранить расширенное условие в URL для совместного использования ссылок или ручного копирования / прошлого
  • 0 ошибка в bind_param, количество параметров в подготовленном утверждении не совпадает
  • 0 Как получить HTML-код из URL в браузере Chrome, используя Java?
  • 0 Как улучшить плагин автозаполнения jquery
  • 0 Как передать данные JSON из контроллера C # в угловой JS?
  • 1 React Native — отключить воспроизведение звука в фоновом режиме через определенное время
  • 1 Генерация URL с параметрами из переменных JS в TWIG
  • 0 Spring Data: findByEntityNot () во многих отношениях
  • 1 Значения, которые не вступили в силу после того, как стали доступны в Vuex Store
  • 0 Не удается найти имя хоста в файле: /// ошибка при использовании Ionic и OAuth.io
  • 1 Реализация интерфейсов и свойств сканера
  • 0 MySQL 5.7.20 не может установить пароль root
  • 1 Процент расчета проблем
  • 1 java.awt.GraphicsEnvironment.getMaximumWindowBounds () не изменяется после изменения режима экрана
  • 1 Утечка памяти при попытке сохранить ссылку на фрагментное представление за пределы onDestoryView ()
  • 1 LINQ — как отсортировать по дате
  • 0 Javascript не загружен в правильном порядке?
  • 0 JQuery датчик для координат
  • 1 Как получить неуправляемый C-массив переменной длины в структуре из C в C #?
  • 1 Как я могу использовать Google Places API несколько раз в приложении, учитывающем местоположение?
  • 1 SLF4J: Не удалось загрузить класс «org.slf4j.impl.StaticLoggerBinder», API
  • 0 очень долго RegExp в jquery?
  • 0 Выяснить параметр Вставить функцию для связанного списка?
  • 1 Получение автоматически сгенерированного идентификатора при вставке в roomDatabase
  • 1 RoutingMissingException с использованием NEST IndexMany <>
  • 1 как связать .so файлы из локального модуля aar в android с файлом приложения android.mk
  • 0 Угловое значение по умолчанию для выбора из фильтра
  • 1 Возврат значения переменной и вывод из блока кода PL / SQL в C #
  • 0 Простой калькулятор HTML / JavaScript не работает?
  • 0 Обработка поста в угловых юнит-тестах
  • 1 Как добавить поле страницы сверху для вертикального просмотра?
  • 0 не могу понять термин «статический»
  • 1 Как мне получить доступ к enum по int или по строке
  • 0 Как установить значение readyStatement () для поля auto_increment в MySQL
  • 1 C # Формат даты — 00:00 — 01:00
  • 0 Как динамически добавить тег в template phpbb3?
  • 1 Как скрыть значение параметра запроса в URL, используя Spring MVC
  • 1 SQL-запрос возвращает данные, но ResultSet пуст
  • 1 Как я могу получить таблицу с динамическими данными из URL, используя Selenium и xpath, или другой альтернативой?
  • 1 Ошибка распознавания токена в: ‘#i’ при разборе грамматики c
  • 1 Украшение именованных компонентов в виндзоре
  • 1 Как настроить функции onTouch и onClick для подвижной плавающей кнопки
  • 0 NodeJS — ошибка зависания сокета
  • 1 Pythonic способ перебирать списки внутри dict параллельно как dict
  • 1 Точки в неудачном тестовом сообщении

Источник: overcoder.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru