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

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

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

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

Q&A

0回答

1735閲覧

pyxelを実行できない

sakuramochiIII

総合スコア8

Python

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

0グッド

0クリップ

投稿2021/06/05 23:47

編集2021/06/06 01:49

前提・実現したいこと

pyxelのファイルを実行すると下のようなエラーメッセージが出ます。

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

pyxel error: unsupported resource file version '1.4.3' in 'LoadAsset'

該当のソースコード

Python

1import pyxel 2import random 3from math import sqrt 4 5WIDTH = 128 6HEIGHT = 128 7 8SCENE_PLAY = 0 9SCENE_GAMEOVER = 1 10 11PLAYER_WIDTH = 8 12PLAYER_HEIGHT = 8 13PLAYER_SPEED = 2 14 15ENEMY_WIDTH = 8 16ENEMY_HEIGHT = 8 17ENEMY_SPEED = 2 18 19BULLET_WIDTH = 2 20BULLET_HEIGHT = 6 21BULLET_SPEED = 2 22 23enemy_list = [] 24bullet_list = [] 25 26def update_list(list): 27 for elem in list: 28 elem.update() 29 30def draw_list(list): 31 for elem in list: 32 elem.draw() 33 34def is_collision(obj_a, obj_b): 35 return obj_a.x + obj_a.w > obj_b.x and obj_a.x < obj_b.x + obj_b.w and obj_a.y + obj_a.h > obj_b.y and obj_a.y < obj_b.y + obj_b.h 36 37class Player(): 38 def __init__(self): 39 self.x = (WIDTH - PLAYER_WIDTH) / 2 40 self.y = HEIGHT - 15 41 self.w = PLAYER_WIDTH 42 self.h = PLAYER_HEIGHT 43 44 def update(self): 45 if pyxel.btn(pyxel.KEY_LEFT): 46 self.x -= PLAYER_SPEED 47 48 if pyxel.btn(pyxel.KEY_RIGHT): 49 self.x += PLAYER_SPEED 50 51 if pyxel.btnp(pyxel.KEY_SPACE): 52 if Bullet.bullet_state: 53 Bullet(self.x + (PLAYER_WIDTH - BULLET_WIDTH) / 2, self.y, 1) 54 Bullet.bullet_state = False 55 56 if self.x < 0: 57 self.x = 0 58 if self.x > WIDTH - PLAYER_WIDTH: 59 self.x = WIDTH - PLAYER_WIDTH 60 61 def draw(self): 62 pyxel.blt(self.x, self.y, 0, 0, 0, PLAYER_WIDTH, PLAYER_HEIGHT, 15) 63 64class Enemy(): 65 def __init__(self): 66 self.x = 0 67 self.y = 10 68 self.w = ENEMY_WIDTH 69 self.h = ENEMY_HEIGHT 70 self.v = ENEMY_SPEED 71 72 enemy_list.append(self) 73 74 def update(self): 75 if self.x + self.v < 0 or self.x + self.v > WIDTH - ENEMY_WIDTH: 76 self.v *= -1 77 self.y += ENEMY_HEIGHT 78 self.x += self.v 79 80 if pyxel.frame_count % (15 * random.randint(3, 5)) == 0: 81 Bullet(self.x + (ENEMY_WIDTH - BULLET_WIDTH) / 2, self.y, -1) 82 83 def draw(self): 84 pyxel.blt(self.x, self.y, 0, 0, 8, ENEMY_WIDTH, ENEMY_HEIGHT, 15) 85 86class Report(Enemy): 87 def __init__(self): 88 super().__init__() 89 self.life = 1 90 91class Test(Enemy): 92 def __init__(self): 93 super().__init__() 94 self.life = 3 95 96 def draw(self): 97 pyxel.blt(self.x, self.y, 0, 0, 8 * self.life, ENEMY_WIDTH, ENEMY_HEIGHT, 15) 98 99class Bullet(): 100 bullet_state = True 101 n = 3 102 def __init__(self, x, y, way): 103 self.x = x 104 self.y = y 105 self.w = BULLET_WIDTH 106 self.h = BULLET_HEIGHT 107 self.v = BULLET_SPEED * way 108 109 bullet_list.append(self) 110 111 def update(self): 112 self.y -= self.v 113 114 def draw(self): 115 if self.v > 0: 116 pyxel.blt(self.x, self.y, 0, 8, 0, BULLET_WIDTH, BULLET_HEIGHT, 15) 117 else: 118 pyxel.blt(self.x, self.y, 0, 10, 0, BULLET_WIDTH, BULLET_HEIGHT, 15) 119 120class App(): 121 def __init__(self): 122 pyxel.init(WIDTH, HEIGHT, caption='INVADER') 123 pyxel.load('game.pyxres') 124 125 self.scene = SCENE_PLAY 126 self.player = Player() 127 self.score = 0 128 129 pyxel.run(self.update, self.draw) 130 131 132 def update(self): 133 if pyxel.btnp(pyxel.KEY_Q): 134 pyxel.quit() 135 136 if self.scene == SCENE_PLAY: 137 self.update_play() 138 elif self.scene == SCENE_GAMEOVER: 139 self.update_gameover() 140 141 def update_play(self): 142 if pyxel.frame_count % 200 == 0: 143 Test() 144 elif pyxel.frame_count % 50 == 0: 145 Report() 146 147 self.player.update() 148 update_list(enemy_list) 149 update_list(bullet_list) 150 151 Bullet.bullet_state = all([bullet.y <= self.player.y - self.player.y / Bullet.n for bullet in bullet_list if bullet.v > 0]) 152 153 for enemy in enemy_list: 154 for bullet in bullet_list: 155 if bullet.v > 0 and is_collision(enemy, bullet): 156 enemy.life -= 1 157 if enemy.life == 0: 158 enemy_list.remove(enemy) 159 self.score += 1 160 bullet_list.remove(bullet) 161 Bullet.bullet_state = True 162 163 if bullet.v < 0 and is_collision(self.player, bullet): 164 self.scene = SCENE_GAMEOVER 165 if is_collision(self.player, enemy): 166 self.scene = SCENE_GAMEOVER 167 168 def update_gameover(self): 169 enemy_list.clear() 170 bullet_list.clear() 171 if pyxel.btnp(pyxel.KEY_ENTER): 172 self.scene = SCENE_PLAY 173 self.score = 0 174 Bullet.n = 3 175 Bullet.bullet_state = True 176 177 178 def draw(self): 179 pyxel.cls(0) 180 181 if self.scene == SCENE_PLAY: 182 self.draw_play() 183 elif self.scene == SCENE_GAMEOVER: 184 self.draw_gameover() 185 186 def draw_play(self): 187 draw_list(enemy_list) 188 draw_list(bullet_list) 189 self.player.draw() 190 pyxel.text(2, 2, "SCORE: " + str(self.score), pyxel.COLOR_WHITE) 191 192 def draw_gameover(self): 193 pyxel.text(48, 40, "GAMEOVER", pyxel.COLOR_WHITE) 194 pyxel.text(42, 55, "RESULT: {}pt".format(self.score), pyxel.COLOR_WHITE) 195 pyxel.text(34, 80, "- PRESS ENTER -", pyxel.COLOR_GRAY) 196 197App()

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

jbpb0

2021/06/06 00:09

> dlopen(/usr/local/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib, 6): Symbol not found: __ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcmm は https://teratail.com/questions/341644 と同じですけど、直ったのではないのですか?
sakuramochiIII

2021/06/06 00:28 編集

当時は直って昨日まで普通に使えてたのですが、今朝起きたら使えなくなっちゃいました、。先日頂いたpipのコマンドを使ってみましたが、やっぱり動かないですね。エラーのメッセージが変わって、 pyxel error: unsupported resource file version '1.4.3' in 'LoadAsset' と出ます。
jbpb0

2021/06/06 00:35 編集

> エラーのメッセージが変わって それなら、 import pyxel のエラーは、やはりpipのやり直しで直るのではないですか? import pyxel だけ実行してもエラー出ますか?
sakuramochiIII

2021/06/06 00:37

今朝、他人が作ったファイルを実行した時にエラー(pyxel error: unsupported resource file version '1.4.3' in 'LoadAsset')が出ました。 そのあと、pip install pyxelを実行してしまいました。そのあと、jbpb0様に先日頂いたコメントを読んで、 pip uninstall pyxel pip install --no-binary :all: pyxel を実行しました。 複雑で申し訳ないです。
jbpb0

2021/06/06 00:44

> pip uninstall pyxel pip install --no-binary :all: pyxel を実行しました。 の状態で import pyxel だけ実行しても > unsupported resource file version '1.4.3' in 'LoadAsset' のエラー出ますか?
sakuramochiIII

2021/06/06 00:56

pyxelの公式サンプルや、自分が今まで作ったファイルは正常に動きました! ですが、他人が作ったファイルを開こうとすると、 pyxel error: unsupported resource file version '1.4.3' in 'LoadAsset' のエラーが出ます。もしかして、開こうとしているファイルの方に問題があるのでしょうか。ちなみに開かないファイルのコードは、質問の「該当のソースコード」の欄に記載しています。
jbpb0

2021/06/06 01:20

それでしたら、現状質問に書いてるエラーは今解決したいエラーではないので、質問のエラーを解決したいエラー > unsupported resource file... に変えてください Traceback... のところから全部書いてください
jbpb0

2021/06/06 01:33 編集

> unsupported resource file version '1.4.3' から類推すると、pyxelのバージョン間で、ファイルの互換性が無い組み合わせがあるのかも > 他人が作ったファイルを実行した時にエラー その他人が、同じコードでエラー出ずに実行できるのなら、その他人とpyxelのバージョンを合わせたら、エラー出ないかも
sakuramochiIII

2021/06/06 01:50

なるほど、ではその方針でpyxelのバージョンを合わせるように動いてみます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問