2016-10-24 32 views
1

私のゲームは16:9の表示比率で動作するように設計されています。pygame:端を切り取らずにフルスクリーンで表示する方法

ただし、コンピュータのモニタには16:9ディスプレイがありません。だから、私はゲームのウィンドウをフルスクリーンに伸ばすためにパイゲームを試してみました。そして、私はさまざまな問題に遭遇しました:

1-画面が黒くなり、モニターに "resolution mismatch "

2ゲームウィンドウが伸びて、グラフィックスが崩れます。

3画面の端が切れてしまいますが、これは非常に受け入れがたいものです。プレイヤーがどれくらいのプレーフィールドを見ることができないのか不利な点がいくつかあります。

ゲームを全画面で表示するには、エッジをカットしないでください。必要に応じて、画面の上部と下部、または左右の端に黒のバーを追加しますプレーヤーは監視する。

ありがとうございます!

(正直なところ、私はちょうど簡単なコマンドがどうあるべきかでそんなにトラブルを抱えていると考えていることはできませんが、私はどこにも答えを見つけることができません!)私はそれを試していない

+0

既に試したことのいくつかを追加できますか?これは、問題の原因を特定するのに役立ちます。 – Sorade

+0

申し訳ありませんが、私のコードが役に立たないことを示すことは間違いありません。誰かが私に動作するコードを表示できるだけなら、私は行かなくてはなりません! –

答えて

0

これはまだアスペクト比を維持しながら、あなたは、任意のモニターをに合わせて画面を拡大縮小する方法をです。

まず、画面がにスケーリングする必要があるものを計算するために、このコード(または類似)を使用します。

import pygame 
pygame.init() 
infostuffs = pygame.display.Info() # gets monitor info 

monitorx, monitory = infostuffs.current_w, infostuffs.current_h # puts monitor length and height into variables 

dispx, dispy = <insert what you want your display length to be>, <and height> 

if dispx > monitorx: # scales screen down if too long 
    dispy /= dispx/monitorx 
    dispx = monitorx 
if dispy > monitory: # scales screen down if too tall 
    dispx /= dispy/monitory 
    dispy = monitory 

dispx = int(dispx) # So your resolution does not contain decimals 
dispy = int(dispy) 

これは、あなたがdispxとdispy与え、あなたがお使いのディスプレイを拡張すべき寸法でありますすべてのループの前に、の表示を更新します。また、あなたに警告するために、私はこのコードをテストすることができませんでした。何か間違っている場合は、と言いますので、私はそれを修正できるのでコメントに教えてください。

編集:さらに2行のコードを追加しました。

+0

あなたのコードを試しましたが、エラーメッセージが表示されています:「integer argument expected、float」 –

+0

これはPygameに浮動小数点ではなく整数が必要な特定の関数があるからです。画像のスケーリングはその1つなので、値を整数に変換します。これを指摘していただきありがとうございます、私は質問を編集しました。 – Douglas

0

が、私のアプローチは次のようになります。

1. 16/9 ~= 1.778 
2. `pygame.init()` ; `scr = pygame.display.Info()` ; `win_size = width, height = scr.current_w, scr.current_h` should give the display width and height. 
3. Multiply height by 1.778, `x = int(height * 1.778)`. 
4. If x < width, then width = x. 
5. If not, then divide width by 1.7788, `y = int(width/1.778)`. Now, height = y 
6. `win_size = width, height` ; `screen = pygame.display.set_mode(win_size, FULLSCREEN)` 
7. Scale and center align your graphics to fit. 
関連する問題