Você está aqui: Python ::: Pygame ::: Aplicações com código fonte completo

Como desenhar grids no Pygame para a criação de jogos como Jogo da Velha, Damas, Xadrez, Campo Minado e Sudoku

Quantidade de visualizações: 1303 vezes
Nesta dica mostrarei um código Pygame completo contendo a base inicial para a crição de jogos de tabuleiro, ou seja, jogos baseados em grades, tais como Jogo da Velha, Damas, Xadrez, Campo Minado e Sudoku.

Embora baseado em códigos encontrados em livros de jogos em Python, o código que apresento está todo em português, com as variáveis em português e cheio de comentários. Basta mexer em algumas variáveis de configuração e você conseguirá montar o tabuleiro que você deseja e, o melhor, detectar eventos em cada uma das células da grade.

Veja, por exemplo, uma grade para o Jogo da Velha:



Note que a célula está colorida de azul. Se clicarmos nela novamente, a cor volta ao branco. Se clicar novamente ela fica azul mais uma vez. O mesmo acontece com todas as células da grade.

Veja o código completo para este mini-projeto em Pygame e Python:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# vamos importar a biblioteca Pygame
import pygame, sys

# vamos definir as variáveis de configuração
preto = (0, 0, 0)
branco = (255, 255, 255)
azul = (0, 0, 255)

# define a quantidade de linhas e colunas
QUANT_LINHAS = 3
QUANT_COLUNAS = 3

# altura, largura e margem entre as celúlas
LARGURA = 100
ALTURA = 100
MARGEM = 1

# tamanho da janela
ALTURA_JANELA = 303
LARGURA_JANELA = 303

# matriz que representa o grid, ou seja, a grade da janela
grade = []

# método principal
def main():
  # monta as linhas e colunas da matriz
  for linha in range(QUANT_LINHAS):
    grade.append([])
    for coluna in range(QUANT_COLUNAS):
      grade[linha].append(0) 
  
  #grid[1][5] = 1

  # inicializa a biblioteca
  pygame.init()
  # obtém a superfície do jogo e define o tamanho da tela
  janela = pygame.display.set_mode((ALTURA_JANELA, LARGURA_JANELA))
  # vamos definir o título da janela do jogo
  pygame.display.set_caption("Como desenhar um grid no Pygame")  
  
  # quantidade de frames por segundo
  FPS = 30
  # construímos o timer
  timer = pygame.time.Clock()

  # e aqui nós entramos no loop do game
  while True:
    # monitoramos os eventos
    for evento in pygame.event.get(): 
      # se o evento foi um pedido para sair
      if evento.type == pygame.QUIT:
        # fechamos a tela do jogo 
        pygame.quit()
        # e saimos do programa
        sys.exit()

      # o evento é o click do mouse? 
      elif evento.type == pygame.MOUSEBUTTONDOWN:
        # obtém a posição do clique do mouse
        pos = pygame.mouse.get_pos()
        # agora convertemos a posição do mouse para linha e coluna na grade
        coluna = pos[0] // (LARGURA + MARGEM)
        linha = pos[1] // (ALTURA + MARGEM)
         
        # esta célula está marcada?
        if grade[linha][coluna] == 1:
          grade[linha][coluna] = 0
        else:  
          # vamos marcar essa célula para receber uma sinalização
          grade[linha][coluna] = 1
        
        print("Evento Clique ", pos, "Coordenadas na Grade: ", linha, coluna)
    
    # pinta a janela de preto
    janela.fill(preto)
    # desenhamos o grid na janela
    for linha in range(QUANT_LINHAS):
      for coluna in range(QUANT_COLUNAS):
        cor = branco
        # houve pedido para pintar essa janela?
        if grade[linha][coluna] == 1:
          cor = azul
        
        # vamos desenhar o retângulo referente a esta célula
        pygame.draw.rect(janela, cor, [(MARGEM + LARGURA) * coluna + MARGEM,
          (MARGEM + ALTURA) * linha + MARGEM, LARGURA, ALTURA])
    
    # dispara o timer
    timer.tick(FPS)
    # atualiza a janela
    pygame.display.flip()

if __name__== "__main__":
  main()


Link para compartilhar na Internet ou com seus amigos:

Python ::: Dicas & Truques ::: Lista (List)

Como pesquisar um item em uma list e removê-lo usando a função remove() do Python

Quantidade de visualizações: 8440 vezes
Nesta dica mostrarei como é possível usar a função remove() do tipo de dados list para pesquisar um item em uma lista e removê-lo. Observe que, se o item a ser removido não for encontrado, um erro do tipo ValueError será exibido.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# função principal do programa
def main():
  # cria uma lista de inteiros
  valores = [2, 5, 12, 2, 3, 32, 18]
 
  # exibe a lista
  print(valores)
 
  try:
    valor = int(input("Informe o valor a ser removido: "))
    valores.remove(valor)
  except ValueError:
    print("O valor pesquisado nao foi encontrado")
  else:
    print("O valor foi removido com sucesso")
 
  # exibe a lista
  print(valores)
  
if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

[2, 5, 12, 2, 3, 32, 18]
Informe o valor a ser removido: 2
O valor foi removido com sucesso
[5, 12, 2, 3, 32, 18]

Observe que a função remove() da list remove apenas o primeiro item encontrado, ou seja, se a lista possuir mais de um valor igual, apenas o primeiro será removido.


Python ::: Fundamentos da Linguagem ::: Estruturas de Controle

Apostila Python para iniciantes - Como exibir os números pares de 0 a 20 usando o laço for da linguagem Python

Quantidade de visualizações: 13490 vezes
Nesta dica mostrarei como podemos usar o laço for da linguagem Python para exibir os números pares de 0 a 20. Note que usaremos os parâmetros start (valor inicial da variável de controle), stop (valor final da variável de controle, não incluído) e step (que especifica o valor de incremento da variável de controle.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# função principal do programa
def main():
  for i in range(0, 21, 2):
    print(i, end = "  ")

if __name__== "__main__":
  main()

Ao executar este código nós teremos o seguinte resultado:

0 2 4 6 8 10 12 14 16 18 20


Python ::: PyQt GUI Toolkit ::: QMainWindow

Como centralizar uma janela QMainWindow do PyQt

Quantidade de visualizações: 39 vezes
Nesta dica mostrarei como podemos centralizar a janela principal de nossa aplicação PyQt. Note que esta janela principal, na maioria das vezes, é representada por uma instância da classe QMainWindow.

Veja o código completo para o exemplo, já atualizado para o PyQt6:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# vamos importar os módulos necessários
import sys
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *
 
# vamos criar uma classe que herda de QMainWindow
class JanelaPrincipal(QMainWindow):
  # construtor da classe
  def __init__(self):
    super().__init__()
 
    # definimos o título da janela 
    self.setWindowTitle("Cadastro de Produtos")
     
    # vamos definir as dimensões da janela
    self.resize(600, 420)

    # vamos obter a geometria do frame da nossa janela
    geometria_frame = self.frameGeometry()

    # acessamos a geometria da monitor e obtemos seu centro
    ponto_central = self.screen().availableGeometry().center()

    # movemos o retângulo obtido anteriormente para o centro da tela
    geometria_frame.moveCenter(ponto_central)
    
    # e finalmente movemos nossa janela para este ponto
    self.move(geometria_frame.topLeft())

if __name__== "__main__":
  # cria a aplicação
  app = QApplication(sys.argv)
 
  # cria a janela principal e a coloca visível
  janela_principal = JanelaPrincipal()
  janela_principal.show()
 
  # executa a aplicação
  app.exec()



Vamos testar seus conhecimentos em Topografia

Rumo e Azimute

Concurso Analista Ambiental - Engenheiro Agrimensor.

Observe a figura abaixo e assinale a alternativa correta.



A) Rumo de A2: N59ºE e Azimute de A1: 59º

B) Rumo de A2: S37ºW e Azimute de A2: 217º

C) Rumo de A1: N23ºE e Azimute de A2: 337º

D) Rumo de A3: S48ºE e Azimute de A1: 37º

E) Rumo de A2: N37ºE e Azimute de A1: 132º
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Transporte de fluidos por bombas

O objetivo no transporte de fluidos por bombas é transferir energia ao fluido, compensar as perdas por atrito e aumentar a vazão no transporte com diferença de altura ou de pressão. Suponha que escoe petróleo cru por uma tubulação horizontal com auxílio de uma bomba com eficiência de 85%. Qual potência deve ser fornecida na entrada da estação de bombeamento para vazão de 2,94m3/s? Considere que a queda de pressão estimada ao longo do escoamento é de 7,92MPa.

A) 23,30MW.

B) 27,41MW.

C) 19,80MW.

D) 85,00MW.

E) 7,96MW.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Como arredondar o valor 7.25 para o inteiro mais próximo em JavaScript?

A) Math.rnd(7.25)

B) Math.round(7.25)

C) rnd(7.25)

D) round(7.25)
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

var palavra = 'b' + 'a' + + 'a' + 'a';
palavra = palavra.toLowerCase();
document.write(palavra);

Qual é o resultado de sua execução?

A) baaa.

B) banana.

C) anana.

D) bananas.

E) Um erro de execução.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Perda de Carga Localizada, Acessórios de Tubulação

Considerando a questão: "Qual a perda de carga singular em um conduto de 100 m, diâmetro de 100 mm, com um fluido escoando a 2 m/s, apresentando as seguintes singularidades rosqueadas na tubulação: válvula globo totalmente aberta e cotovelo de 45º com raio normal?".

Qual o erro relativo da perda de carga linear em comparação com a perda de carga total?

A) 0,08%.

B) 4,30%.

C) 8,28%.

D) 9,00%.

E) 0,09%.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 50 usuários muito felizes estudando em nosso site.