2017-12-04 2 views
0

私はpygameを使ってビジュアルなブラックジャックゲームを作っています。私は過去1時間ほどの周りを見ていました。私が探しているものを見つけることができないようです。ユーザーが簡単にメニューをナビゲートできるように、表示(コード内のscreenという名前)を更新する必要があります。以下の機能は、私が読んだすべてのものの製品であり、必要なボタンを適用して実行すると、マウスボタンが押されている間に「ブラックジャックブラスト」テキストの色が変わるだけです。Python Pygame - ディスプレイを更新する

def update_window(): 
     textsurface = Font1.render('BlackJack Blast!', True, e_m_lighter) 
     screen.blit(textsurface,(106,100)) 
     pygame.display.update() 

ボタンを1回押すだけでディスプレイが恒久的に更新される方法はありますか?

+0

このサンプルでは、​​コードサンプルを追加するか、この質問に投稿したものを修正することを検討してください。現在のところ、書式設定とスコープは、私たちがあなたを助けることを困難にしています。ここではそれを始めるための[偉大な資源](http://stackoverflow.com/help/mcve)です。あなたのコードで幸運! –

+0

はOOP(Object-Oriented Programing)をよりよく学び、状態を記憶するクラスButtonを作成することができます。あなたの 'update_window()'はテキストを変更しますが、次回は 'mainloop'が古いバージョンを描画するので、それを記憶しません。 – furas

+0

例を見てください。[button-click-cicle-color](https://github.com/furas/python-examples/tree/master/pygame/button-click-cycle-color) - それは 'selfの現在の色を記憶しています。 index'をクリックすると正しい色が表示されます。 – furas

答えて

0

私はあなたのコードを見ることができませんので、私は即興します。

は、次の2つの部分にあなたが湖底をクリックしたことを覚えます変数(すなわちclicked = Falseを)とスプリットコードを使用する必要があります - 1が第二は、異なるボタンがclicked

# set on start (before mainloop) 

clicked = False 

# executed when you click in button 

def update_window(): 
    global clicked 
    clicked = True  

# in main loop when you draw button 

if clicked 
    textsurface = Font1.render('BlackJack Blast!', True, e_m_lighter) 
else: 
    textsurface = Font1.render('BlackJack Blast!', True, NORMAL_COLOR) 

screen.blit(textsurface,(106,100)) 
pygame.display.update() 

の値に依存描画します、clicked変更されますまたは変数を使用して現在の画像を保持することができます

# set on start (before mainloop) 

normal_text = Font1.render('BlackJack Blast!', True, NORMAL_COLOR) 
clicked_text = Font1.render('BlackJack Blast!', True, e_m_lighter) 

current_text = normal_text 

# executed when you click in button 

def update_window(): 
    global current_text 
    current_text = clicked_text 

# in main loop when you draw button 

screen.blit(current_text, (106,100)) 
pygame.display.update() 
+0

ちょうど私が探していた答え!どうもありがとうございました! –

+0

私はこれをテストし、テキストの色を変えると完璧に動作しますが、背景と同じようには見えません。つまり、背景色は変わりますが、以前にレンダリングされたアイテムは画面上に描画されません。何かアドバイス? –

+0

背景も同様にする必要があります。もしあなたが 'クリックされたら'変数の中に別のイメージや色を割り当て、後でこの変数を使って背景を描画/ blitする必要があります。 – furas