2016-08-22 8 views
1

私は2つのテキストの例を持っていますが、それらはお互いの上に表示されます。どのようにして2番目のものが最初のものに置き換わるようにするのですか?pygameでテキストが重なり合わないようにするにはどうすればいいですか?

if player_x_coor <= -2750: 
     text = font.render("text 1", True, WHITE) 
     screen.blit(text, [100, 150]) 

if player_x_coor <= -6310: 
     text = font.render("text 2", True, WHITE) 
     screen.blit(text, [100, 150]) 

あなたが見ることができるように、私はtext = font.render("text 2", ...)

を割り当てることによって、2番目のテキストと最初のテキストを置換しようとしたが、第二には、それに重なるように最初のテストはまだ示しています。

答えて

-1

別のテキストを書き込む前に、最初のテキストを消去する必要があります。

この類似の質問を参照してください。hereおよびhere

私はあなたが望むことをする方法はたくさんあると思います。最善の方法は次のようになります。キャッシュ

    • コピー(テキストなし)現在の表面のテキスト
    • ブリットあなたのキャッシュされた表面にテキストを描画
  • +0

    あなたは無地で画面を埋めるのですか?私はちょうど画面を埋める場合、それはその色ですべてをカバーし、2番目のテキストが表示されます。 – glad0s

    +0

    長方形の領域を埋める... –

    +0

    答えが少し誤解を招くので、例を挙げれば参考になるかもしれません。あなたはただテキストを_erase_できません。 _ただし、テキストが占める長方形の領域をウィンドウの色で塗りつぶすことができます。 –

    2

    あなたは上に描くと既に存在するものはすべてそれ自身でクリアされません。あなたは何らかの色を使って画面を空白にしなければならない、黒と言う。画面に前のフレームが表示されなくなったら、各オブジェクトを下から上に再描画できます。

    置き換えようとしているテキストの下に単純な四角形がある場合、(画面全体を再描画するのではなく)その四角形を描画して新しいテキストを描画することは可能です。しかし、少数のトライバルシェイプを扱わなければ、これはより複雑になります。

    通常、ゲームループを使用してフレームxを1秒間に再描画します。パターンは次のとおりです:

    def game_loop(): 
        BLACK = (0, 0, 0) 
    
        while True: 
         # Do this loop, at maximum, 50 times a second 
         clock.tick(50) 
    
         # Clear screen 
         screen.fill(BLACK) 
         # Draw background 
         #  characters 
         #  user interface 
    
         # Get user input 
    
    関連する問題