質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

8067閲覧

pygameにおける画面更新について

S.K.

総合スコア11

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/15 00:03

pygameライブラリについてアルゴリズム雑記というサイトや、pygame公式リファレンスを利用して勉強していたのですが、不明な点がいくつか出て来ましたので、3つほど質問したいと思います。

python

1# -*- coding:utf-8 -*- 2import pygame 3from pygame.locals import * 4import sys 5 6 7def main(): 8 pygame.init() # Pygameの初期化 9 screen = pygame.display.set_mode((300, 200)) # 大きさ600*500の画面を生成 10 pygame.display.set_caption("GAME") # タイトルバーに表示する文字 11 12 while (1): 13 screen.fill((0,0,0)) # 画面を黒色に塗りつぶし 14 pygame.draw.line(screen, (0,95,0), (0,0), (80,80), 5) # 直線の描画 15 pygame.display.update() # 画面を更新 16 # イベント処理 17 for event in pygame.event.get(): 18 if event.type == QUIT: # 閉じるボタンが押されたら終了 19 pygame.quit() # Pygameの終了(画面閉じられる) 20 sys.exit() 21 22 23if __name__ == "__main__": 24 main()
  1. 無限ループ内の処理について、画面を黒く塗りつぶして直線を描画した後に画面を更新しているようなのですが、画面の更新とは何なのかよく分かりません。何を更新しているのでしょうか...
  2. また、そもそも直線を描いているだけなのにどうして無限ループする必要があるのでしょうか。実はそこも良く分かってません。
  3. 「閉じるボタンが押されたら終了」とありますが、閉じるボタンとはどこにあるのでしょうか。この記述を抜かすとどうなってしまいますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

3.「閉じるボタンが押されたら終了」とありますが、閉じるボタンとはどこにあるのでしょうか。この記述を抜かすとどうなってしまいますか?

コードでいうと

python

1for event in pygame.event.get(): 2 if event.type == QUIT: # 閉じるボタンが押されたら終了 3 pygame.quit() # Pygameの終了(画面閉じられる) 4 sys.exit() 5

の部分です。ここの記述を除くと

イメージ説明

閉じるボタン (×印)がクリックできなくなります。

投稿2018/09/15 00:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

S.K.

2018/09/15 01:06

なるほど、閉じるボタンとはそのことだったのですね。理解できました。ありがとうございます!!!
guest

0

ベストアンサー

PythonによるOpen Dynamics Engine講座 その4

ざっくり言うとパソコン画面もテレビや映画などと同じように1枚の画像を連続して表示しているだけです。
一般的なパソコンですと60Hz(ヘルツ)で1秒間に60回更新されています。
マウスを移動させるとマウスカーソルが移動して見えるのはそのおかげです。

上記参考URLの動画のような物を動かすプログラムの大まかな流れです。

・物体の位置を計算し1枚づつ画像を作る
・再描画で1枚づつ画像を更新する
・無限ループさせて動いているように見せる
・終了するためのボタンを用意しておく

投稿2018/09/15 00:27

opyon

総合スコア1009

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

S.K.

2018/09/15 00:42

回答ありがとうございます。 ではこの場合、「黒い画面に直線を描画した1枚の画像」を高速で無限ループさせて表示している、という理解で間違っていないでしょうか?
opyon

2018/09/15 00:47

アルゴリズム雑記というサイトの例を見ても、「直線を描画」させる計算は1回だけのようですので、結果的にそういうことになりますね。 学習する流れでそういった単純な動作をサンプルとしているのだと思いますよ。 Hello,Wold!と同じことで最初から複雑なことしても理解しづらいですからね。 少しづつ実行できることを確認しながら次へ進めばいいと思います。
S.K.

2018/09/15 00:49

理解できました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問