मैं एक स्टेज टाइप गेम बनाने की कोशिश कर रहा हूं जहां खिलाड़ी "गचा" नामक यादृच्छिक ड्रॉ मशीन का उपयोग करके वर्ण एकत्र करता है। खिलाड़ी खेल खेलकर अर्जित की गई इन-गेम मुद्रा खर्च करके एक गचा खरीद सकता है। मैंने अभी गेम बनाना शुरू किया है और मैं इसे इस तरह से बनाता हूं जैसे गेम कमांड चलाता है

adventure()

और मैंने "साहसिक ()" को परिभाषित किया है

def adventure():
    print(f'you are currentyly on stage {player_stage}')
    print('[a]play / [b]edit team / [c]change stage / [d]exit')
    print('player team:')
    for i,character in enumerate(player_team, 1):
        print(i, character)
    player_input = input('> ')
    if player_input == 'd':
        return (whatever I have to return after playing)
    elif player_input == 'c':
        change_stage()

मान लें कि खिलाड़ी मंच 4-5 (अध्याय 4, चरण 5) पर है और जब खिलाड़ी पिछले चरणों को फिर से खेलने के लिए मंच को बदलना चाहता है, तो मैं कोड प्रदर्शित करना चाहता हूं

4-1 (available)
4-2 (available)
4-3 (available)
4-4 (available)
4-5 (available)
4-6 (unavailable)
4-7 (unavailable)
4-8 (unavailable)
4-9 (unavailable)
4-10 (unavailable)

क्योंकि प्रति अध्याय 10 चरण हैं। मैंने खिलाड़ी_टीम को परिभाषित किया है:

player_team = [
    f'{Fore.WHITE}Academy Naruto{Style.RESET_ALL} [1 star]',
    f'{Fore.WHITE}1% Deku{Style.RESET_ALL} [1 star]',
    f'{Fore.WHITE}Academy Sakura{Style.RESET_ALL} [1 star]'

और मैंने खिलाड़ी_स्टेज को परिभाषित किया है

player_front_stage = 1
player_back_stage = 1
player_stage = f'{player_front_stage}-{player_back_stage}'

फ्रंट_स्टेज का अर्थ है अध्याय और बैक_स्टेज अर्थ स्टेज मैं चेंज_स्टेज () को परिभाषित कर सकता हूं

def change_stage():
    if player_front_stage == 1:
        if player_back_stage == 1:
            print('1-1 (available)')
            print('1-2 (unavailable)')
            print('1-3 (unavailable)')
            print('1-4 (unavailable)')
            print('1-5 (unavailable)')
            print('1-6 (unavailable)')
            print('1-7 (unavailable)')
            print('1-8 (unavailable)')
            print('1-9 (unavailable)')
            print('1-10 (unavailable)')
        elif player_back_stage == 2:
            print('1-1 (available)')
            print('1-2 (available)')
            print('1-3 (unavailable)')
            print('1-4 (unavailable)')
            print('1-5 (unavailable)')
            print('1-6 (unavailable)')
            print('1-7 (unavailable)')
            print('1-8 (unavailable)')
            print('1-9 (unavailable)')
            print('1-10 (unavailable)') 
        elif player_back_stage == 3:
            ... (keep going until 1-10 is available)
    elif player_front_stage == 2:
            ... (same thing as player_front_stage 1)

लेकिन यह बहुत लंबा होगा और मुझे यकीन है कि इस कोड को कम करने का कोई तरीका होगा जैसे

check what stage player is on,
print the stages on that chapter only,
put available next to stages that are <= to player_back_stage,
put unavailable to rest.

अगर आपको मेरा पूरा कोड चाहिए

from colorama import Fore
from colorama import Style
def game():
    print('[he]list of commands')

    command_list = [
        '[help/he]list of commands',
        '[balance/ba] player balance',
        '[adventure/ad] go clear stagse'
    ]

    player_coin = 10000
    player_gem = 500

    player_front_stage = 1
    player_back_stage = 1
    player_stage = f'{player_front_stage}-{player_back_stage}'

    player_team = [
        f'{Fore.WHITE}academy naruto{Style.RESET_ALL} [1 star]',
        f'{Fore.WHITE}1% deku{Style.RESET_ALL} [1star]',
        f'{Fore.WHITE}Academy sakura{Style.RESET_ALL} [1 star]'
    ]

    def he():
        for i,command in enumerate(command_list, 1):
            print(i, command_list)

    def ba():
        print(f' player coin: {Fore.YELLOW}{player_coin}{Style.RESET_ALL}')
        print(f' player gem: {Fore.BLUE}{player_gem}{Style.RESET_ALL}')

    def change_stage():
        what do i put here

    def ad():
        print(f'스테이지 {player_stage}')
        print('[a]플레이 / [b]팀변경 / [c]스테이지 변경 / [d]나가기')
        print('플레이어 팀 :')
        for i,character in enumerate(player_team, 1):
            print(i, character)
        player_input = input('> ')
        if player_input == 'd':
            return
        elif player_input == 'c':
            change_stage()

    while True:
        player_input = input('> ')

        if player_input == 'he':
            he()

        elif player_input == 'ba':
            ba()
game()
-1
STU SEUNG GUE CHOI 9 जून 2021, 07:18
1
लूप के लिए उपयोग करें: for i in range(0, 10): print(i)
 – 
Dr.Strange Codes
9 जून 2021, 07:27

1 उत्तर

सबसे बढ़िया उत्तर

आप इस तरह किसी प्रकार की स्ट्रिंग बनाने का उपयोग कर सकते हैं:

def printOptions(front,back):
  for k in range(1,11):
     if k<=back:
       print('%s-%s (available)'%(front,back))
     else:
       print('%s-%s (unavailable)'%(front,back))

कोट्स के अंदर %s को क्रमशः %(फ्रंट, बैक) मानों से बदल दिया जाता है।

0
user1763510 9 जून 2021, 07:30