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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Pygame

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

Q&A

解決済

1回答

1916閲覧

pygameのフルスクリーン

takeuchi0525

総合スコア21

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Pygame

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

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

0グッド

0クリップ

投稿2020/12/04 10:27

#alien_invasion.py

import sys import pygame from settings import Settings from ship import Ship class AlienInvasion: """ゲームのアセットと動作を管理する全体的なクラス""" def __init__(self): """ゲームを初期化し、ゲームのリソースを生成する""" pygame.init() self.settings=Settings() self.screen=pygame.display.set_mode((0,0),pygame.FULLSCREEN) self.settings.screen_width=self.screen.get_rect().width self.settings.screen_height=self.screen.get_rect().height pygame.display.set_caption("エイリアン侵略") self.ship=Ship(self) #背景色を設定する self.bg_color=(230,230,230) def run_game(self): """ゲームのメインループを開始する""" while True : self._check_events() self.ship.update() self._update_screen() def _check_events(self): """キーボードとマウスのイベントに対応する""" for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit() elif event.type==pygame.KEYDOWN: self._check_keydown_events(event) elif event.type==pygame.KEYUP: self._check_keyup_events(event) def _check_keydown_events(self,event): """キーを押すイベントに対応する""" if event.key==pygame.K_RIGHT: self.ship.moving_right=True elif event.key==pygame.K_LEFT: self.ship.moving_left=True elif event.key==pygame.K_q: sys.exit() def _check_keyup_events(self,event): """"キーを離すイベントに対応する""" if event.key==pygame.K_RIGHT: self.ship.moving_right=False elif event.key==pygame.K_LEFT: self.ship.moving_left=False def _update_screen(self): """画面上の画像を更新し、新しい画面に切り替える""" self.screen.fill(self.settings.bg_color) self.ship.blitme() pygame.display.flip() if __name__== '__main__': #ゲームのインスタンスを生成し、ゲームを実行する ai=AlienInvasion() ai.run_game()

#settings.py

class Settings: """エイリアンの侵略の全設定を格納するクラス""" def __init__(self): """ゲームの初期設定""" #画面に関する設定 self.screen_width=1200 self.screen_height=800 self.bg_color=(230,230,230) self.ship_speed=1.5

#ship.py

import pygame class Ship: """宇宙船を管理するクラス""" def __init__(self, ai_game): """宇宙船を初期化し、開始時の位置を設定する""" self.screen=ai_game.screen self.settings=ai_game.settings self.screen_rect=ai_game.screen.get_rect() #宇宙船の画像を読み込み、サイズを取得する self.image=pygame.image.load('images/ship.bmp') self.rect=self.image.get_rect() #新しい宇宙船を画面下部の中央に配置する self.rect.midbottom=self.screen_rect.midbottom #宇宙船の水平位置の浮動小数点数を格納する self.x=float(self.rect.x) #左右の移動フラグ self.moving_right=False self.moving_left=False def update(self): """移動フラグによって宇宙船の位置を更新する""" #宇宙船のxの値を更新する(rectではない) if self.moving_right and self.rect.right<self.screen_rect.right: self.x +=self.settings.ship_speed if self.moving_left and self.rect.left>0: self.x -=self.settings.ship_speed #self.xからrectオブジェクトの位置を更新する self.rect.x=self.x def blitme(self): """宇宙船を現在位置に描画する""" self.screen.blit(self.image,self.rect)

#質問
alien_invasion.pyで、ゲームをフルスクリーンでプレイできるように設定したところ、キーボードの←、→を押しても宇宙船が動かなくなりました。self.screen=pygame.display.set_mode((0,0),pygame.FULLSCREEN)の画面のサイズのところを(1200,800)に変えてみると動くようになりました。しかし、本には(0,0)と書いてあります。(0,0)で宇宙船を動かすにはどうしたらいいですか?回答よろしくお願いいたします。
python3.7 spyder
実践編 最短距離でゼロからしっかり学ぶ python入門 Eric Matthes 著 より

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

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

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

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

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

guest

回答1

0

ベストアンサー

本通りのコードで動かすには、同じ環境・バージョンを揃える必要があります。
但し、この場合は情報が更新されてるので、
本に合わせるよりは最新の環境に合わせて動いた方で良いと思います。

pygame.display.set_mode

念の為SDLのバージョンも確認。関連項目

resolution引数を設定しなかったり(0, 0)を設定した場合に、pygameが SDLのバージョン1.2.10以降を使用していると、作成されたSurfaceはパソコンのモニターと同じ大きさとなります。


書籍の情報を調べる。
翻訳の場合は原初の著者のサイト等に更新された情報があることが多い

投稿2020/12/04 12:11

teamikl

総合スコア8664

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

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

takeuchi0525

2020/12/05 06:29

回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問