2017-02-21 6 views
-2

私はPythonを学習し、メモリからVisual Basicで作成した古いプログラムを再作成しています。複数のオプションを持つDef Win()を実装する

ほとんどのものは正常に動作していますが、勝者を宣言するにはより良い方法が必要であることがわかります。目的は、2〜4つのチームが賑やかになり、質問のスコアを得ることです。最高得点のチームが勝利する。

これは勝つためのコードがどのように見えるかですが、非常に乱雑であり、より良い方法でなければならないと感じています。

elif event.key == pygame.K_w: 
    if Team1Point > Team2Point and Team1Point > Team3Point and Team1Point > Team4Point: 
     Win = True 
     win.play() 
     while Win: 
      gameDisplay.blit(boardwin,(0,0)) 
      text = large_font.render(str(Team1Name)+" Wins!", True, black) 
      gameDisplay.blit(text, [display_width/2, display_height/2]) 
      pygame.display.update() 
      clock.tick(5) 
      gameDisplay.blit(background,(0,0)) 
      pygame.display.update() 
      clock.tick(5) 
    elif Team2Point > Team1Point and Team2Point > Team3Point and Team2Point > Team4Point: 
     Win = True 
     win.play() 
     while Win: 
      gameDisplay.blit(boardwin,(0,0)) 
      text = large_font.render(str(Team2Name)+" Wins!", True, black) 
      gameDisplay.blit(text, [display_width/2, display_height/2]) 
      pygame.display.update() 
      clock.tick(5) 
      gameDisplay.blit(background,(0,0)) 
      pygame.display.update() 
      clock.tick(5) 
    elif Team3Point > Team2Point and Team3Point > Team1Point and Team3Point > Team4Point: 
     Win = True 
     win.play() 
     while Win: 
      gameDisplay.blit(boardwin,(0,0)) 
      text = large_font.render(str(Team3Name)+" Wins!", True, black) 
      gameDisplay.blit(text, [display_width/2, display_height/2]) 
      pygame.display.update() 
      clock.tick(5) 
      gameDisplay.blit(background,(0,0)) 
      pygame.display.update() 
      clock.tick(5) 
    elif Team4Point > Team2Point and Team4Point > Team3Point and Team4Point > Team1Point: 
     Win = True 
     win.play() 
     while Win: 
      gameDisplay.blit(boardwin,(0,0)) 
      text = large_font.render(str(Team4Name)+" Wins!", True, black) 
      gameDisplay.blit(text, [display_width/2, display_height/2]) 
      pygame.display.update() 
      clock.tick(5) 
      gameDisplay.blit(background,(0,0)) 
      pygame.display.update() 
      clock.tick(5) 
    elif Team1Point == Team2Point or Team1Point == Team3Point or Team1Point == Team4Point or Team2Point == Team3Point or Team2Point == Team4Point or Team3Point == Team4Point: 
     Win = True 
     win.play() 
     while Win: 
      gameDisplay.blit(boardwin,(0,0)) 
      text = large_font.render("Tie Win!", True, black) 
      gameDisplay.blit(text, [display_width/2, display_height/2]) 
      pygame.display.update() 
      clock.tick(5) 
      gameDisplay.blit(background,(0,0)) 
      pygame.display.update() 
      clock.tick(5) 

は、私は次のように使用して勝利を定義しようとしたが、受信TypeError: Win() missing 1 required positional argument: 'Team1Name'エラー:

:私は私のコードは、名前を作成し、画面上に配置し、そのエラーを受信しません

def Win(): 
    win.play() 
    Win = True 
    while Win: 
     gameDisplay.blit(boardwin,(0,0)) 
     text = large_font.render(str(Team1Name)+" Wins!", True, white) 
     gameDisplay.blit(text, [display_width/2, display_height/2]) 
     pygame.display.update() 
     clock.tick(5) 
     gameDisplay.blit(background,(0,0)) 
     pygame.display.update() 
     clock.tick(5) 

def Team1(Team1Name,Team1Point): 
    text = large_font.render(str(Team1Name)+": " + str(Team1Point), True, white) 
    gameDisplay.blit(text, [10,10]) 

私はこれをどのようにきれいにすることができると思う?たぶん私はちょうど私の画面をあまりにも凝視している。

+1

ハイライト表示の構文では、「大文字」変数名を使用しないことを示唆しています。 –

+1

関数とブール値を同時に参照するために、同じ名前 "Win"を使用しようとしています。間違いなくここではコードの繰り返しが多すぎます。私は、あなたがPython辞書を見るのに時間をかけたいと思うかもしれないと思います。 – Chris

答えて

0

私はこの問題を発見しました。 DEF項目をループに配置する必要がありました。

私も仕事場で大声で話していました。それは私のコードをきれいにする方法を実現することができました。また、ユーザー数を4人から2人に減らしました。これは、私が数年前に作ったハードウェアのうちの2つだけだったからです。

は、私は次のように上から下に行ってきました:

for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      gameExit = True 
      gameOver = False 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_1: 
       answer.play() 
       BlinkLeftImage() 
       Team1Answer() 
      elif event.key == pygame.K_2: 
       answer.play() 
       BlinkRightImage() 
       Team2Answer() 
      elif event.key == pygame.K_h: 
       Help() 
      elif event.key == pygame.K_w: 
       win.play() 
       Win() 
      elif event.key == pygame.K_q: 
       pygame.quit() 
       quit() 

が、私は今、しかし別の質問を持っています。テキストブロックにアンカー(用語が間違っている可能性があります)の方法がありますか?

は現在、私のコードは次のとおりです。ソートの、うまく動作しますが、テキストが正しく並んでいない

def Team2(Team2Name,Team2Point): 
    if display_width <= 800: 
     text = small_font.render(str(Team2Name)+": " + str(Team2Point), True, red) 
     gameDisplay.blit(text, [((display_width/4)*3),10]) 
    elif display_width <= 1200: 
     text = medium_font.render(str(Team2Name)+": " + str(Team2Point), True, red) 
     gameDisplay.blit(text, [((display_width/4)*3),10]) 
    elif display_width >= 1440: 
     text = large_font.render(str(Team2Name)+": " + str(Team2Point), True, red) 
     gameDisplay.blit(text, [((display_width/4)*3),10]) 

。私は、Pythonでオブジェクトを自動スケールする方法があるかどうかはわかりません。それが私の次の努力だと思います!

+0

テキストを中央に揃えたり、揃えたり、左右に整列したりしますか? –

+0

イメージに基づいてテキストを中央に配置したいと思います。私は自分の "オートスケーリング"を作成して遊んだが、十分にうまくいくが、実際にセンター、左、右、または正当化する方法を知ることは知って良いだろう! – Joey

関連する問題