この行を使用して、テキストを表面にブリットしようとしています。
surface.blit(myFont.render(text, 1, text_color),(200,200))
しかし、エラーが発生します:TypeError:必須の引数'dest'(pos 2)が見つかりません
なぜこれが起こっているのか理解できないようです...
エラーが見つかりました...
myFontのサイズをfloatタイプに設定しようとしました。気に入らなかったようです!:)
surface.blit()関数の2番目の引数として適切なrectを指定していません。長方形である必要があります。私は次のことを提案します:
text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.topleft=(200, 200)
surface.blit(text, rect)
すべてを1行のコードで実行するには、少し複雑になる可能性があります。
surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200, 200, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)
中央を200、200にしたい場合、簡単な複数行のコードは次のようになります。
text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.centerx=200
rect.centery=200
surface.blit(text, rect)
1行でそれを行うために、それは途方もなく長くなります:
surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200-myFont.render(text, 1, text_color).get_rect().width/2, 200-myFont.render(text, 1, text_color).get_rect().height/2, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)
ご覧のとおり、これを実行しようとしていた1行よりも、5行のコードで実行する方がはるかに簡単であり、おそらくそれも高速です。基本的に、1行に対して行う必要があるのは、エラーを回避するために、テキストをレンダリングし、rectの各パラメーターに対してそのrectを取得することです。これは、特にこれをループに入れている場合は、非常に長い時間がかかります。ロードを実行している場合は問題ないかもしれませんが、それでも複数行をお勧めします。
Surface.blit(source, dest, area=None, special_flags = 0): return Rect
描画するサーフェスをパラメータとして設定していません。詳細については、 Surface.blit
に関するドキュメントをお読みください