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

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

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

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

Q&A

1回答

1717閲覧

Pygameでビデオエラーが出てゲームが起動しない

ryuuabis

総合スコア24

Pygame

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

0グッド

0クリップ

投稿2022/02/28 11:31

編集2022/02/28 12:03

前提・実現したいこと

Pygameのソースコードで、ビデオシステムのエラーが出ます。
MacBook ProでVSCODEを使ってパイソンファイルを書いてます。

VSCODEの右上の矢印マークでファイルを実行しても何も起きない状態です。

コードはテキストのKindleをそのままコピーしてるので誤字はありません。
それと、blitとxposに波線エラーで値がないと出てしまいます。

原因がわかる方いますでしょうか?
ちなみに、Pygame自体のサンプルのエイリアンゲームや、他の自作のファイルはできました。

*追記
VSCODEのデバックモードで実行するとウィンドウが出るようになったのですが最初の方で止まってしまいます。
普通のモードで実行するとやっぱりビデオエラーが出てしまいます。。

発生している問題・エラーメッセージ

pygame.error: video system not initialized blit (constant) SURFACE: Surface "blit": Unknown word.c xpos (variable) xpos: int "xpos": Unknown word.

該当のソースコード

"""caveCopyright2016KenichiroTanaka""" import sys from random import randint import pygame from pygame.locals import QUIT, Rect, KEYDOWN, K_SPACE pygame.init() pygame.key.set_repeat(5,5) SURFACE = pygame.display.set_mode((800,600)) FPSCLOCK = pygame.time.Clock() def main(): walls = 80 ship_y = 250 velocity = 0 score = 0 slope = randint(1,6) sysfont = pygame.font.SysFont(None,36) ship_image = pygame.image.load("ship.png") bang_image = pygame.image.load("bang.png") holes=[] for xpos in range(walls): holes.append(Rect(xpos * 10,100,10,400)) game_over = False while True: is_space_down = False for event in pygame.event.get(): if event.type==QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN: if event.key==K_SPACE: is_space_down = True #自機を移動 if not game_over: score += 10 velocity += -3 if is_space_down else 3 ship_y += velocity #洞窟をスクロール edge = holes[1].copy() test = edge.move(0,slope) if test.top <= 0 or test.bottom >= 600: slope = randint(1, 6) * (-1 if slope > 0 else 1) edge.inflate_ip(0,20) edge.move_ip(10,slope) holes.append(edge) del holes[0] holes = [x.move(10,0)for x in holes] #衝突? if holes[0].top > ship_y or \ holes[0].bottom < ship_y + 80: game_over = True #描画 SURFACE.fill((0,255,0)) for hole in holes: pygame.draw.rect(SURFACE,(0,0,0),hole) SURFACE.blit(ship_image,(0,ship_y)) score_image = sysfont.render("score is {}".format(score), True,(0,0,225)) SURFACE.blit(score_image,(600,20)) if game_over: SURFACE.blit(bang_image, (0, ship_y-40)) pygame.display.update() FPSCLOCK.tick(15) if __name__ == '__main__': main()

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

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

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

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

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

guest

回答1

0

pygame.quite()ではなく、sys.exit()を使うと良さそうです
(import sysしてから使ってくださいね)。

参考:https://www.tekito-gottani.com/entry/2019/02/05/155437

投稿2022/07/06 14:01

bamboo_music_ac

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問