Найти - Пользователи
Полная версия: инвентарь
Начало » Python для новичков » инвентарь
1 2
sumrak_ss
from msvcrt import getch
import data

list_1=['[a]', '[b]', '[c]', '[d]', '[e]', '[f]', '[g]',\
'[h]', '[i]', '[j]', '[k]', '[l]', '[m]', '[n]',\
'[o]', '[p]', '[q]', '[r]', '[s]', '[t]', '[u]',\
'[v]', '[w]', '[x]', '[y]', '[z]']

list_2=[ u'ППШ-41', u'СКС', u'АК-47']

list_3=[data.ppsh, data.sks, data.ak]

print '\n'.join(["%s %-16s x%d" % item for item in zip(list_1, list_2, list_3)])

while 1:
c=getch()
if c=='a':
if list_2[0]==u'АК-47':
print u'Автомат Калашникова'

elif list_2[0]==u'ППШ-41':
print u'Пистолет-пулемёт Шпагина'

elif list_2[0]==u'СКС':
print u'Самозарядный карабин Симонова'

if c=='b':
if list_2[1]==u'АК-47':
print u'Автомат Калашникова'

elif list_2[1]==u'ППШ-41':
print u'Пистолет-пулемёт Шпагина'

elif list_2[1]==u'СКС':
print u'Самозарядный карабин Симонова'

if c=='c':
if list_2[2]==u'АК-47':
print u'Автомат Калашникова'

elif list_2[2]==u'ППШ-41':
print u'Пистолет-пулемёт Шпагина'

elif list_2[2]==u'СКС':
print u'Самозарядный карабин Симонова'
Пожалуйста, помогите упростить эту чудовищную конструкцию, учитывая что list_2 может быть в несколько раз длиннее. Или может вообще нужно пойти другим путем?? Это инвентарь в игре..
o7412369815963
может чета типа такого
obj = { u'АК-47':u'Автомат Калашникова', u'ППШ-41':u'Пистолет-пулемёт Шпагина' }
list_2 = { 'a':u'ППШ-41', 'b':u'АК-47' }

while 1:
print obj[ list_2[ getch() ] ]
sumrak_ss
o7412369815963
может чета типа такого
obj = { u'АК-47':u'Автомат Калашникова', u'ППШ-41':u'Пистолет-пулемёт Шпагина' }
list_2 = { 'a':u'ППШ-41', 'b':u'АК-47' }

while 1:
print obj[ list_2[ getch() ] ]
А как в этом случае изменить эту строку чтобы вывод оставался прежним?
print '\n'.join(["%s %-16s x%d" % item for item in zip(list_1, list_2, list_3)])
sumrak_ss
list_2 = { 'a':u'ППШ-41', 'b':u'АК-47' }
дело в том что предметы в инвентарь добавляются в произвольном порядке, поэтому нельзя ‘a’ присвоить ‘ППШ-41’ и т.д.
o7412369815963
sumrak_ss
list_2 = { 'a':u'ППШ-41', 'b':u'АК-47' }
дело в том что предметы в инвентарь добавляются в произвольном порядке, поэтому нельзя ‘a’ присвоить ‘ППШ-41’ и т.д.
почему нельзя, нашел АК - повесил на кнопку А, нашел ППШ - повесил на кнопку Б и тд

а вообще все зависит от цели и начальных данных
sumrak_ss
o7412369815963
нашел АК - повесил на кнопку А, нашел ППШ - повесил на кнопку Б и тд
ты имеешь ввиду зарезервировать для каждого предмета свою букву-“кнопку”? нет, они должны быть независимы, первый столбец (“кнопки”) строго в алфавитном порядке.
вывод должен быть что-то вроде:

ППШ-41 х10
СКС х20
АК-47 х30

Нажатие на ‘а’, например, выводит описание ППШ, теперь если выбросить все ППШ (удалить list_2), то нажатие на ‘а’ будет выводить описание СКС:

СКС х20
АК-47 х30
(колличество предметов это значения переменных кот хранятся в data)
o7412369815963
вот терь уже попонятней чего надо
# coding: utf8

class Obj():
def __init__(self,name,col):
self.name = name
self.col = col
def __repr__(self):
return '%s x%d' % (self.name,self.col)

obj = { u'АК-47': Obj(u'Автомат Калашникова',10), u'ППШ-41': Obj(u'Пистолет-пулемёт Шпагина',20) }
list_2 = [u'ППШ-41', u'АК-47']

print '\n'.join( ['[%c] %s' % (ord('a')+i,obj[x]) for i,x in enumerate(list_2)] )

while 1:
c = raw_input('(a,b,... "-" = del):')
# c = getch()
if c == '-': list_2 = list_2[1:]
else:
n = ord(c[0]) - ord('a')
print obj[list_2[n]]
при вводе a,b,c… Выводит инфо по объекту который лежит в той ячейке
при вводе “-”, удаляет первую ячейку
sumrak_ss
вот что выдает:

Пистолет-пулемёт Шпагина x20
Автомат Калашникова x10
(a,b,… “-” = del):a
Traceback (most recent call last):
File “go.py”, line 21, in <module>
print obj[list_2]
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-7: ordinal not in range(128)
Griffon
Это на “с” что ли нажали? В любом случае надо проверять входит ли N в длину массива.
o7412369815963
Griffon
Это на “с” что ли нажали? В любом случае надо проверять входит ли N в длину массива.
там наверно на русском языке ввели.

вообщем я примерную баз для развития дал
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB