다중 프로세스가 입력을 요청하기 위해 중지하지 않고 오류를 반환합니다.

마티유 소베

pygame.midi를 사용하여 미디 노트를 연주하는 함수를 만들었고, 스맥 잭이라는 게임도 만들었습니다. 멀티 프로세스를 사용하여 게임과 노래를 동시에 재생했지만 프로그램이 입력을 요청하기 위해 멈추지 않고 계속해서이 오류를 생성하는 오류가 발생했습니다.

loop_c의 126 행

action = input ( '') EOFError : 줄을 읽을 때 EOF

도와주세요, 감사합니다.

import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
import pygame.midi
import time
from multiprocessing import Process

C = 0
Ch = 1
D = 2
Dh = 3
E = 4
F = 5
Fh = 6
G = 7
Gh = 8
A = 9
Ah = 10
B = 11



def playnote(i, n , x):
    if n > -1:
        i+=(12*(n)+12)
    elif n == 0:
        i+=12
    pygame.midi.init()
    player = pygame.midi.Output(0)
    player.set_instrument(0)
    player.note_on(i, 127)
    time.sleep(x)
    pygame.midi.quit()

def loop_a():
    while True:
        playnote(B, 2, 0.5)
        playnote(Ch, 3, 0.5)
        playnote(D, 3, 0.5)
        playnote(E, 3, 0.5)
        playnote(Fh, 3, 0.5)
        playnote(D, 3, 0.5)
        playnote(Fh, 3, 0.5)
        playnote(F, 3, 0.5)
        playnote(Ch, 3, 0.5)
        playnote(F, 3, 0.5)
        playnote(E, 3, 0.5)
        playnote(C, 3, 0.5)
        playnote(E, 3, 0.5)
        #end of verse
        playnote(B, 2, 0.5)
        playnote(Ch, 3, 0.5)
        playnote(D, 3, 0.5)
        playnote(E, 3, 0.5)
        playnote(Fh, 3, 0.5)
        playnote(D, 3, 0.5)
        playnote(Fh, 3, 0.5)
        playnote(B, 3, 0.5)
        playnote(A, 3, 0.5)
        playnote(Fh, 3, 0.5)
        playnote(D, 3, 0.5)
        playnote(Fh, 3, 0.5)
        playnote(A, 3, 0.5)

def loop_b():
    while True:
        playnote(B, 1, 0.5)
        playnote(Fh, 1, 0.5)


def loop_c():
    '''
    YOU NEED TO INSTALL PYGAME

    IF YOU DON'T THE SOUND WONT WORK
    '''

    import random
    import time
    import os
    os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
    import pygame.midi

    # These are notes for the keyboard
    C = 0
    Ch = 1
    D = 2
    Dh = 3
    E = 4
    F = 5
    Fh = 6
    G = 7
    Gh = 8
    A = 9
    Ah = 10
    B = 11

    # this is a function to play the note, i = the midi note number (c = 0, D = 2, etc.), n is the octave, x is the not duration.
    def playnote(i, n, x):
        if n > -1:
            i += (12 * (n) + 12)
        elif n == 0:
            i += 12
        pygame.midi.init()
        player = pygame.midi.Output(0)
        player.set_instrument(0)
        player.note_on(i, 50)
        time.sleep(x)
        pygame.midi.quit()

    dealercount = 0
    dealertotal = 0
    hitcounter = 0
    cardtotal = 0
    card = random.randrange(1, 11)
    cardtotal += card
    print('Welcome to SmackJack!')
    print(" _____     _____")
    print("|9    |   |A .  |")
    print("|^ ^ ^|   | /.\ |")  # badass cards to set the mood
    print("|^ ^ ^|   |(_._)|")
    print("|^ ^ ^|   |  |  |")
    print("|____6|   |____V|")
    print('your current card is', card, 'you can hit or stay, what would you like to do?')
    playnote(C, 4, 1)
    playnote(G, 4, 0.5)
    action = input('')
    while (action != 'hit') and (action != 'stay'):
        print('you can hit or stay')
        action = input()
    aces = 0
    while action == 'hit':  # while loop to detect if player typed 'hit'
        while (action != 'hit') and (action != 'stay'):
            print('you can hit or stay')
            action = input()
        hitcounter += 1
        card = random.randrange(1, 11)
        cardtotal += card
        if card == 11:
            aces += 1
        while cardtotal == 21:
            print(cardtotal)
            print('you have 21! YOU WIN!')
            playnote(C, 4, 1)
            playnote(G, 4, 0.5)
            exit()
        while cardtotal >= 22 and aces > 0:
            aces -= 1
            cardtotal -= 10
        while cardtotal >= 22 and aces == 0:
            print('you have', cardtotal)
            print('you lose :(')
            playnote(G, 4, 1)
            playnote(C, 4, 0.5)
            exit()

            while hitcounter == 5:
                print('your current total is')
                print(cardtotal)
                print('you must stay')
                action = input()
        print('you got', card, 'your current total is')
        print(cardtotal)
        print('you can hit or stay, what would you like to do?')
        playnote(Fh, 4, 0.5)
        action = input()

    while action == 'stay':
        dealercard = random.randrange(1, 11)
        dealertotal += dealercard
        dealercount += 1
        print('the dealer draws', dealercard, 'their total is', dealertotal)
        time.sleep(0.25)
        if dealertotal > 21:
            print('your total', cardtotal, 'dealers total', dealertotal)
            print('you win :)')
            playnote(C, 4, 1)
            playnote(G, 4, 0.5)
            exit()
        elif dealercount == 5 and dealertotal > 21:
            print('your total', cardtotal, 'dealers total', dealertotal)
            print('you lose :(')
            playnote(G, 4, 1)
            playnote(C, 4, 0.5)
            exit()
            break

    if dealertotal > cardtotal:  # LOSE
        print('your total', cardtotal, 'dealers total', dealertotal)
        print('you lose :(')
        playnote(G, 4, 1)
        playnote(C, 4, 0.5)
        exit()

    elif cardtotal > dealertotal:  # WIN
        print('your total', cardtotal, 'dealers total', dealertotal)
        print('you win :)')
        playnote(C, 4, 1)
        playnote(G, 4, 0.5)
        exit()


if __name__ == '__main__':
    Process(target=loop_a).start()
    Process(target=loop_b).start()
    Process(target=loop_c).start()
Vinegret43

하위 프로세스에서 사용자 입력을 읽는 것은 좋지 않으므로 다음과 같이 기본 프로세스에서 "loop_c"함수를 실행하면됩니다.

(이것은 파일 끝에서 가져온 것입니다)

if __name__ == '__main__':
    Process(target=loop_a).start()
    Process(target=loop_b).start()
    loop_c() # Running this function in the main process

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Flutter가 장치를로드하지 않고 '시작 잠금을 해제하기 위해 다른 flutter 명령을 기다리는 중 ...'이라고 말합니다.

분류에서Dev

프로세스가 VBS를 실행 중인지 확인하고 닫을 때 로그 오프합니다.

분류에서Dev

Reactjs에서 중복 값을 가져오고 표시하기 위해 두 가지 다른 API 요청을 어떻게 비교합니까?

분류에서Dev

프로그램은 사용자 입력을 요청하기 위해 기다리지 않습니다.

분류에서Dev

프로세스를 중지하기 위해 다이를 교체

분류에서Dev

다중 처리를 사용할 때 하위 프로세스가 인수를 존중하지 않습니다.

분류에서Dev

python2의 하위 프로세스가 오류를 반환합니다.

분류에서Dev

이 다중 프로세스 케이스에서 큐가 통신을 위해 작동하지 않는 이유

분류에서Dev

다음 중 실행중인 프로세스를 방해하지 않는 것은 무엇입니까?

분류에서Dev

Python은 프로세스에서 문을 인쇄 / 로깅하지 않고 다중 처리를 시작합니다.

분류에서Dev

div를 다시로드하기 위해 ajax 요청을 수행하면 jquery가 작동하지 않습니다.

분류에서Dev

useEffect가 약속을 존중하지 않고 null을 반환합니다.

분류에서Dev

Mediaplayer를 해제하고 onPause 및 onResume을 중지하면 Android에서 오류가 발생합니다.

분류에서Dev

dir의 하위 프로세스로 검색하고 0이 아닌 오류를 반환합니다.

분류에서Dev

실행중인 경우 프로세스 ID를 반환하고 그렇지 않은 경우 다른 출력을 반환하는 명령?

분류에서Dev

파이썬 데몬 스크립트를 수정하면 중지가 OK를 반환하지 않지만 프로세스를 종료합니다.

분류에서Dev

컬 가져 오기 : (22) 요청한 URL에서 오류를 반환했습니다. 403 Forbidden while cocoa pods를 통해 linphone을 설치하는 중?

분류에서Dev

Rsync가 작동을 중지하고 "rsync 오류 : io.c (235) [sender = 3.1.2]에서 설명 할 수없는 오류 (코드 255)"를 반환합니다.

분류에서Dev

Rsync가 작동을 중지하고 "rsync 오류 : io.c (235) [sender = 3.1.2]에서 설명 할 수없는 오류 (코드 255)"를 반환합니다.

분류에서Dev

Bash는 curl 요청을 반복하고 파일로 출력하고 빈 응답까지 중지합니다.

분류에서Dev

ajax 요청이 페이지 새로 고침을 중지하지 않습니다.

분류에서Dev

URLStreamHandlerFactory에 대한 HttpURLConnection 생성 중 오류 발생 : 프로토콜이 입력을 지원하지 않습니다.

분류에서Dev

몇 초 후 오류없이 하위 프로세스가 반환되지만 명령이 작업을 수행하지 않았습니다.

분류에서Dev

이중 연결 목록의 FOR 루프는 마지막 요소를 반환하지 않습니다. 그 반대는 분할 오류를 제공합니다.

분류에서Dev

충족되지 않은 종속성 및 하위 프로세스 / usr / bin / dpkg가 DEBIAN에서 오류 코드 (1) 오류를 반환했습니다.

분류에서Dev

중첩 구조체 개념을 배우려고 노력하면서 이해를 위해 짧은 프로그램을 작성했지만 아래에 언급 된 오류가 발생합니다.

분류에서Dev

libqtcore4 : 하위 프로세스 / usr / bin / dpkg가 오류 코드 (1)를 반환했습니다.- "공유`/ etc / xdg / Trolltech.conf`를 덮어 쓰려고 시도 중입니다."

분류에서Dev

파이썬 다중 처리로 얻은 결과를 직접 요약하고 메모리를 절약하기 위해 모든 개별 결과를 반환하지 않는 방법은 무엇입니까?

분류에서Dev

사용자가 209,312,414를 입력하면 프로그램을 중지해야합니다.

Related 관련 기사

  1. 1

    Flutter가 장치를로드하지 않고 '시작 잠금을 해제하기 위해 다른 flutter 명령을 기다리는 중 ...'이라고 말합니다.

  2. 2

    프로세스가 VBS를 실행 중인지 확인하고 닫을 때 로그 오프합니다.

  3. 3

    Reactjs에서 중복 값을 가져오고 표시하기 위해 두 가지 다른 API 요청을 어떻게 비교합니까?

  4. 4

    프로그램은 사용자 입력을 요청하기 위해 기다리지 않습니다.

  5. 5

    프로세스를 중지하기 위해 다이를 교체

  6. 6

    다중 처리를 사용할 때 하위 프로세스가 인수를 존중하지 않습니다.

  7. 7

    python2의 하위 프로세스가 오류를 반환합니다.

  8. 8

    이 다중 프로세스 케이스에서 큐가 통신을 위해 작동하지 않는 이유

  9. 9

    다음 중 실행중인 프로세스를 방해하지 않는 것은 무엇입니까?

  10. 10

    Python은 프로세스에서 문을 인쇄 / 로깅하지 않고 다중 처리를 시작합니다.

  11. 11

    div를 다시로드하기 위해 ajax 요청을 수행하면 jquery가 작동하지 않습니다.

  12. 12

    useEffect가 약속을 존중하지 않고 null을 반환합니다.

  13. 13

    Mediaplayer를 해제하고 onPause 및 onResume을 중지하면 Android에서 오류가 발생합니다.

  14. 14

    dir의 하위 프로세스로 검색하고 0이 아닌 오류를 반환합니다.

  15. 15

    실행중인 경우 프로세스 ID를 반환하고 그렇지 않은 경우 다른 출력을 반환하는 명령?

  16. 16

    파이썬 데몬 스크립트를 수정하면 중지가 OK를 반환하지 않지만 프로세스를 종료합니다.

  17. 17

    컬 가져 오기 : (22) 요청한 URL에서 오류를 반환했습니다. 403 Forbidden while cocoa pods를 통해 linphone을 설치하는 중?

  18. 18

    Rsync가 작동을 중지하고 "rsync 오류 : io.c (235) [sender = 3.1.2]에서 설명 할 수없는 오류 (코드 255)"를 반환합니다.

  19. 19

    Rsync가 작동을 중지하고 "rsync 오류 : io.c (235) [sender = 3.1.2]에서 설명 할 수없는 오류 (코드 255)"를 반환합니다.

  20. 20

    Bash는 curl 요청을 반복하고 파일로 출력하고 빈 응답까지 중지합니다.

  21. 21

    ajax 요청이 페이지 새로 고침을 중지하지 않습니다.

  22. 22

    URLStreamHandlerFactory에 대한 HttpURLConnection 생성 중 오류 발생 : 프로토콜이 입력을 지원하지 않습니다.

  23. 23

    몇 초 후 오류없이 하위 프로세스가 반환되지만 명령이 작업을 수행하지 않았습니다.

  24. 24

    이중 연결 목록의 FOR 루프는 마지막 요소를 반환하지 않습니다. 그 반대는 분할 오류를 제공합니다.

  25. 25

    충족되지 않은 종속성 및 하위 프로세스 / usr / bin / dpkg가 DEBIAN에서 오류 코드 (1) 오류를 반환했습니다.

  26. 26

    중첩 구조체 개념을 배우려고 노력하면서 이해를 위해 짧은 프로그램을 작성했지만 아래에 언급 된 오류가 발생합니다.

  27. 27

    libqtcore4 : 하위 프로세스 / usr / bin / dpkg가 오류 코드 (1)를 반환했습니다.- "공유`/ etc / xdg / Trolltech.conf`를 덮어 쓰려고 시도 중입니다."

  28. 28

    파이썬 다중 처리로 얻은 결과를 직접 요약하고 메모리를 절약하기 위해 모든 개별 결과를 반환하지 않는 방법은 무엇입니까?

  29. 29

    사용자가 209,312,414를 입력하면 프로그램을 중지해야합니다.

뜨겁다태그

보관