エルJeito fは、Calデfazer eジョガー蛇USADO APENASパイソンe No .
33529 ワード
Olは、Pessoas Maravilhosas desseサイト、hoje eu vou - ensm para voc sデuma ma detalhada como usarは、パイオニアPala fazer um jogo cl - no ssssnoなし端末、アンドデムカワールドコールダ、vamos entender o que esエサリブe suas楽しい美人es e b bシシアスです.
VO Deixar O link DA DocumentaESSE Pacote vem Junto com A Instalaは、Oをします‖o oをしてくださいPython e e exstem conitos重要なittantes que devemos entenderは、来ます. o que s como iniciar e deligarは を呪います como副詞caracteres、atualizar e limpar janelas.
Terb - me - End - Re - entendermos O Conconcto de Coordenadas X E y , Paris Conseguirmos posicionar nossos elementos no terminal SEM Mais delongas、パランnは、EestendermosデメリットAqui、vamosは、desenvolver nosso jogo e a medique que formos criando、vou explicando o que利用可能なusei daquela formaを得ます.
Usso jogo preisa de um menu , e vamos criar esse daqui :
パラシュートで降下する人は、Configura Ses Chees es Iiciais、Vou usar Tamb Emとして、Unicode de Profundidade NAS Janelas、パラ・クスエス・ポッサムSER Fempilhadas Tuma Belelasとして、VAMOS USAR Oパネルパラシュートで降下します.
<論文>テレコンティア・イン・ジャンタラの『書簡』をめぐって
Noecho desativa o eco autom des tico de pressionamentos des tecla ( evita que o programa insira cada tecla duas vezes );
CursRangeセットUSAMASパラシュートで降下する人
StartRange色USAMAS para Definir cor para nosso端末、コアpadrとしてnosso caso vamos usar
ニュアンスパネルE UPDATERANパネルTEM A ver COM nossos痛みは、mencionados foriororteである、Vamos Criar
アゴラVamosクリアーnossa楽しい巣は、デ表示、VO Deixar O Comentは、Ro C C Etapa、Neose M Etse vamos Fazer O ProcessoデMontar O Menu Com T To Tulo e Dar Funcionalidadeパラシュートで降下します.
来られたエーモスエーモスiniciando oは、ポルノEUフィズo cをdiuエムArquivo Separado、MaなしProjeto最終的なiniciamos apenas uma - venz、Criamos ent April Nam Janela com O Newin SetandoとしてCoordenadas y E x、Sim、Nesse Casoとして楽しいです.
パラグンoデキシアo Artigo gigante、VAMOSの結論は、Aqui、Ma O Projeto Eestは、no replitパラVoccの分析を行います.
ボムPessoal、Iideia foi比較してくださいcom vocは、como funciona o mは、duloをしますduloは、maデMaeira Divertida、ジョガドをします!Atualmente QuaseÑo Vemos NemhumaインターフェースEM端末、Ma como eu semprefalo、sempre - bom吸収体conteは、do、vai que馬馬horipramos、entのo oのisisso、fico porのaqui、um beijo eのmaisのmais!
VO Deixar O link DA DocumentaESSE Pacote vem Junto com A Instalaは、Oをします‖o oをしてくださいPython e e exstem conitos重要なittantes que devemos entenderは、来ます.
Terb - me - End - Re - entendermos O Conconcto de Coordenadas X E y , Paris Conseguirmos posicionar nossos elementos no terminal
Usso jogo preisa de um menu , e vamos criar esse daqui :
パラシュートで降下する人は、Configura Ses Chees es Iiciais、Vou usar Tamb Emとして、Unicode de Profundidade NAS Janelas、パラ・クスエス・ポッサムSER Fempilhadas Tuma Belelasとして、VAMOS USAR Oパネルパラシュートで降下します.
#!/usr/bin/env python
import sys
import curses
from curses import panel
from snake import Snake
screen = curses.initscr()
curses.noecho()
curses.curs_set(0)
curses.start_color()
screen.keypad(1)
_panel = panel.new_panel(screen)
panel.update_panels()
Nota se que usamos algunm m ' t todos como initscr , noecho , cursound set , starttle color , keypad , newpanel panel e updatewrap panel , vou explicar o que es cada um :<論文>テレコンティア・イン・ジャンタラの『書簡』をめぐって
Noecho desativa o eco autom des tico de pressionamentos des tecla ( evita que o programa insira cada tecla duas vezes );
CursRangeセットUSAMASパラシュートで降下する人
StartRange色USAMAS para Definir cor para nosso端末、コアpadrとしてnosso caso vamos usar
ニュアンスパネルE UPDATERANパネルTEM A ver COM nossos痛みは、mencionados foriororteである、Vamos Criar
アゴラVamosクリアーnossa楽しい巣は、デ表示、VO Deixar O Comentは、Ro C C Etapa、Neose M Etse vamos Fazer O ProcessoデMontar O Menu Com T To Tulo e Dar Funcionalidadeパラシュートで降下します.
def display():
position = 0
_panel.top()
_panel.show()
screen.clear()
# adicionamos um título para o menu
screen.addstr(1, 50, '========== Snake ==========', curses.A_BOLD)
while True:
screen.refresh()
curses.doupdate()
# verificamos a quantidade de itens no menu, e de acordo com a posição,
# se for igual ao index, define o modo do cursor
# na tela como normal ou reverso, assim como monta com ajuda do addstr o texto do menu,
# usando os nomes que definimos e as posições
# de coordenadas (y,x) que queremos, nesse caso para cada item eu usei o 3
# como ponto inicial e durante o for incremento o y para as opções
# ficarem uma embaixo da outra
for i, item in enumerate(MENU):
mode = curses.A_NORMAL
if i == position:
mode = curses.A_REVERSE
screen.addstr(3 + i, 50, f'{i}. {item}', mode)
# a função getch é usada para aguardar a capturar o pressionamento da tecla
key = screen.getch()
# aqui incremento a posição, caso eu dê enter em algum item do menu
# é com a variável position que consiguirei definir o que vai ser feito
if key == curses.KEY_UP:
position = 0
elif key == curses.KEY_DOWN:
position = len(MENU) - 1
elif key in [curses.KEY_ENTER, ord('\n')]:
if position == len(MENU) - 1:
# como defini o exit no fim do menu,
# aqui verifico se ele é o indice final
# e se sim eu saio do programa
sys.exit()
else:
# inicia o jogo da cobra
screen.clear()
# snake()
break
# limpa a tela anterior ao pressionar a tecla e atualiza a exibição com base na pos,
# fecho o painel e atualizo a tela física para corresponder à tela virtual.
screen.clear()
_panel.hide()
panel.update_panels()
curses.doupdate()
AP通信は、nossa楽しい味覚o oデ表示クリダ、Vamos Criar - Ma楽しみSponistro oパラロモモスNosso Cが、digo、sはパラシュートで降下しますパラシュートで降下します.Py Ficar - Asia#!/usr/bin/env python
import sys
import curses
from curses import panel
from cobra import snake
screen = curses.initscr()
curses.noecho()
curses.curs_set(0)
curses.start_color()
screen.keypad(1)
_panel = panel.new_panel(screen)
panel.update_panels()
MENU = ['Start', 'Exit']
def display():
position = 0
_panel.top()
_panel.show()
screen.clear()
# adicionamos um título para o menu
screen.addstr(1, 50, '========== Snake ==========', curses.A_BOLD)
while True:
screen.refresh()
curses.doupdate()
# verificamos a quantidade de itens no menu, e de acordo com a posição,
# se for igual ao index, define o modo do cursor
# na tela como normal ou reverso, assim como monta com ajuda do addstr o texto do menu,
# usando os nomes que definimos e as posições
# de coordenadas (y,x) que queremos, nesse caso para cada item eu usei o 3
# como ponto inicial e durante o for incremento o y para as opções
# ficarem uma embaixo da outra
for i, item in enumerate(MENU):
mode = curses.A_NORMAL
if i == position:
mode = curses.A_REVERSE
screen.addstr(3 + i, 50, f'{i}. {item}', mode)
# a função getch é usada para aguardar a capturar o pressionamento da tecla
key = screen.getch()
# aqui incremento a posição, caso eu dê enter em algum item do menu
# é com a variável position que consiguirei definir o que vai ser feito
if key == curses.KEY_UP:
position = 0
elif key == curses.KEY_DOWN:
position = len(MENU) - 1
elif key in [curses.KEY_ENTER, ord('\n')]:
if position == len(MENU) - 1:
# como defini o exit no fim do menu,
# aqui verifico se ele é o indice final
# e se sim eu saio do programa
sys.exit()
else:
# inicia o jogo da cobra
screen.clear()
snake()
break
# limpa a tela anterior ao pressionar a tecla e atualiza a exibição com base na pos,
# fecho o painel e atualizo a tela física para corresponder à tela virtual.
screen.clear()
_panel.hide()
panel.update_panels()
curses.doupdate()
def run(object):
display()
if __name__ == '__main__':
curses.wrapper(run)
com isso fchamos oメニューe vamos para nosso jogo,no mesmesesesquemdo do c dio acima,em todo o c c dio h go coment is rios para facaar o entendimento来られたエーモスエーモスiniciando oは、ポルノEUフィズo cをdiuエムArquivo Separado、MaなしProjeto最終的なiniciamos apenas uma - venz、Criamos ent April Nam Janela com O Newin SetandoとしてCoordenadas y E x、Sim、Nesse Casoとして楽しいです.
import curses
from random import randint
ESC = 27 # a tecla esc é a nr 27
curses.initscr()
curses.noecho()
curses.curs_set(0)
screen = curses.newwin(20, 50, 0, 0) #y,x
screen.keypad(1)
screen.border(0)
screen.nodelay(1)
def snake():
# defino aqui as posições x,y e a quantidade de nós da minha cobra,
# cada nó parte da mesma posição no eixo y
# e em posições diferentes no eixo x, para criar o "000"
snake = [(1, 3), (1, 2), (1, 1)]
# defino aqui a posição inicial da comida na janela, qual será seu posicionamento.
food = (10, 20)
#inicia a comida na posição escolhida
screen.addch(food[0], food[1], 'ѽ')
score = 0 # a pontuação do jogo começa em 0
# defino a key com o pressionamento da seta para a direita,
# para iniciar o movimento da cobra
key = curses.KEY_RIGHT
while key != ESC:
# adicionando um texto com nossa pontuação, que a medida que formos
# jogando e acertando, será incrementado o score
screen.addstr(0, 2, f'Pontuação {str(score)} ')
# velocidade da cobra na janela
screen.timeout(150 - (len(snake)) // 5 + len(snake)//10 % 120)
old_key = key
event = screen.getch() # aguarda e recupera o pressionamento do usuário na tela
key = event if event != -1 else old_key
if key not in [curses.KEY_LEFT, curses.KEY_RIGHT, curses.KEY_UP, curses.KEY_DOWN, ESC]:
key = old_key
# Aqui verificamos a posição inicial do primeiro nó da cobra
# e de acordo com a key pressionada pelo usuário, ou seja, quando as setas
# são pressionadas, verificamos quais são e incrementamos os eixos x e y
y = snake[0][0]
x = snake[0][1]
if key == curses.KEY_DOWN:
y += 1
elif key == curses.KEY_UP:
y -= 1
elif key == curses.KEY_RIGHT:
x += 1
elif key == curses.KEY_LEFT:
x -= 1
snake.insert(0, (y, x))
# vamos checar se nosso x e y não corresponde as bordas que iniciamos lá em cima no curses.newwin(20, 50, 0, 0),
# se corresponder, significa que os nós da cobra bateram na parede, se isso acontecer temos que sair do jogo.
if y == 0 or y == 19:
break
if x == 0 or x == 49:
break
# se a posição do ultimo nó for correspondente ao nó inicial, significa que a cabeça da cobra bateu na calda,
# devemos sair do jogo.
if snake[0] in snake[1:]:
break
if snake[0] == food:
# nesse momento verificamos se a posição do primeiro nó da cobra está nos eixos da comida, se for no inicio,
# vai verificar se está na posição (10,20) que definimos, se sim, significa que a cobra comeu o alimento,
# então vamos zerar a tupla da comida e fazemos um laço para que enquanto essa tupla estiver vazia,
# com ajuda da lib random, denifimos novos posicionamentos para esse objeto,
# a lib vai criar posicionamentos randomicos dentro do limite da janela que estipulamos no começo,
# por isso dentre 1,18 e 1,48. Se a comida for gerada em cima de uma posição que a cobra estiver
# a tupla é zerada novamente e o laço é continuado, caso contrário, damos um addch
# passando as novas posições da comida e inserindo o caracter escolhido novamente nessa posição
score += 1
food = ()
while food == ():
food = (randint(1, 18), randint(1, 48))
if food == snake:
food = ()
screen.addch(food[0], food[1], 'ѽ')
else:
# caso contrário vamos remover o ultimo caracter ● adicionado e mover a cobra na janela.
last = snake.pop()
screen.addch(last[0], last[1], ' ')
# Sempre inserimos o caracter na cobra
screen.addch(snake[0][0], snake[0][1], '●')
Voltando Ao Nosso Primeiro Cは、dioデメニュー、Inseramos L ' o o nosso Arquivoをしますjogo e onde deixamosは、ヘビcomentado removemos o comentを得ます.Py para jogarmosパラグンoデキシアo Artigo gigante、VAMOSの結論は、Aqui、Ma O Projeto Eestは、no replitパラVoccの分析を行います.
ボムPessoal、Iideia foi比較してくださいcom vocは、como funciona o mは、duloをしますduloは、maデMaeira Divertida、ジョガドをします!Atualmente QuaseÑo Vemos NemhumaインターフェースEM端末、Ma como eu semprefalo、sempre - bom吸収体conteは、do、vai que馬馬horipramos、entのo oのisisso、fico porのaqui、um beijo eのmaisのmais!
Reference
この問題について(エルJeito fは、Calデfazer eジョガー蛇USADO APENASパイソンe No .), 我々は、より多くの情報をここで見つけました https://dev.to/thaisribeiro/um-jeito-facil-de-fazer-e-jogar-snake-usando-apenas-python-e-nocoes-basicas-de-coordenadas-50ooテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol