前提・実現したいこと
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()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。