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

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

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

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

受付中

他人の作ったファイルが実行できない

sakuramochiIII
sakuramochiIII

総合スコア8

Python

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

1回答

0リアクション

0クリップ

731閲覧

投稿2021/06/07 15:55

前提・実現したいこと

他人の作ったファイルが実行できなくて困っています。pyxelのバージョンはともに1.4.3で揃っています。アドバイスを頂きたいです。

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

Traceback (most recent call last): File "/Users/higashirinako/Downloads/invader/invader.py", line 1, in <module> import pyxel File "/usr/local/lib/python3.9/site-packages/pyxel/__init__.py", line 10, in <module> from . import core # type: ignore File "/usr/local/lib/python3.9/site-packages/pyxel/core/__init__.py", line 42, in <module> _lib = _load_library() File "/usr/local/lib/python3.9/site-packages/pyxel/core/__init__.py", line 39, in _load_library return cdll.LoadLibrary(lib_path) File "/usr/local/Cellar/python@3.9/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ctypes/__init__.py", line 452, in LoadLibrary return self._dlltype(name) File "/usr/local/Cellar/python@3.9/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ctypes/__init__.py", line 374, in __init__ self._handle = _dlopen(self._name, mode) OSError: 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 Referenced from: /usr/local/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib (which was built for Mac OS X 10.15) Expected in: /usr/lib/libstdc++.6.dylib in /usr/local/lib/python3.9/site-packages/pyxel/core/bin/macos/libpyxelcore.dylib

該当のソースコード

Python

import pyxel import random from math import sqrt WIDTH = 128 HEIGHT = 128 SCENE_PLAY = 0 SCENE_GAMEOVER = 1 PLAYER_WIDTH = 8 PLAYER_HEIGHT = 8 PLAYER_SPEED = 2 ENEMY_WIDTH = 8 ENEMY_HEIGHT = 8 ENEMY_SPEED = 2 BULLET_WIDTH = 2 BULLET_HEIGHT = 6 BULLET_SPEED = 2 enemy_list = [] bullet_list = [] def update_list(list): for elem in list: elem.update() def draw_list(list): for elem in list: elem.draw() def is_collision(obj_a, obj_b): 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 class Player(): def __init__(self): self.x = (WIDTH - PLAYER_WIDTH) / 2 self.y = HEIGHT - 15 self.w = PLAYER_WIDTH self.h = PLAYER_HEIGHT def update(self): if pyxel.btn(pyxel.KEY_LEFT): self.x -= PLAYER_SPEED if pyxel.btn(pyxel.KEY_RIGHT): self.x += PLAYER_SPEED if pyxel.btnp(pyxel.KEY_SPACE): if Bullet.bullet_state: Bullet(self.x + (PLAYER_WIDTH - BULLET_WIDTH) / 2, self.y, 1) Bullet.bullet_state = False if self.x < 0: self.x = 0 if self.x > WIDTH - PLAYER_WIDTH: self.x = WIDTH - PLAYER_WIDTH def draw(self): pyxel.blt(self.x, self.y, 0, 0, 0, PLAYER_WIDTH, PLAYER_HEIGHT, 15) class Enemy(): def __init__(self): self.x = 0 self.y = 10 self.w = ENEMY_WIDTH self.h = ENEMY_HEIGHT self.v = ENEMY_SPEED enemy_list.append(self) def update(self): if self.x + self.v < 0 or self.x + self.v > WIDTH - ENEMY_WIDTH: self.v *= -1 self.y += ENEMY_HEIGHT self.x += self.v if pyxel.frame_count % (15 * random.randint(3, 5)) == 0: Bullet(self.x + (ENEMY_WIDTH - BULLET_WIDTH) / 2, self.y, -1) def draw(self): pyxel.blt(self.x, self.y, 0, 0, 8, ENEMY_WIDTH, ENEMY_HEIGHT, 15) class Report(Enemy): def __init__(self): super().__init__() self.life = 1 class Test(Enemy): def __init__(self): super().__init__() self.life = 3 def draw(self): pyxel.blt(self.x, self.y, 0, 0, 8 * self.life, ENEMY_WIDTH, ENEMY_HEIGHT, 15) class Bullet(): bullet_state = True n = 3 def __init__(self, x, y, way): self.x = x self.y = y self.w = BULLET_WIDTH self.h = BULLET_HEIGHT self.v = BULLET_SPEED * way bullet_list.append(self) def update(self): self.y -= self.v def draw(self): if self.v > 0: pyxel.blt(self.x, self.y, 0, 8, 0, BULLET_WIDTH, BULLET_HEIGHT, 15) else: pyxel.blt(self.x, self.y, 0, 10, 0, BULLET_WIDTH, BULLET_HEIGHT, 15) class App(): def __init__(self): pyxel.init(WIDTH, HEIGHT, caption='INVADER') pyxel.load('game.pyxres') self.scene = SCENE_PLAY self.player = Player() self.score = 0 pyxel.run(self.update, self.draw) def update(self): if pyxel.btnp(pyxel.KEY_Q): pyxel.quit() if self.scene == SCENE_PLAY: self.update_play() elif self.scene == SCENE_GAMEOVER: self.update_gameover() def update_play(self): if pyxel.frame_count % 200 == 0: Test() elif pyxel.frame_count % 50 == 0: Report() self.player.update() update_list(enemy_list) update_list(bullet_list) Bullet.bullet_state = all([bullet.y <= self.player.y - self.player.y / Bullet.n for bullet in bullet_list if bullet.v > 0]) for enemy in enemy_list: for bullet in bullet_list: if bullet.v > 0 and is_collision(enemy, bullet): enemy.life -= 1 if enemy.life == 0: enemy_list.remove(enemy) self.score += 1 bullet_list.remove(bullet) Bullet.bullet_state = True if bullet.v < 0 and is_collision(self.player, bullet): self.scene = SCENE_GAMEOVER if is_collision(self.player, enemy): self.scene = SCENE_GAMEOVER def update_gameover(self): enemy_list.clear() bullet_list.clear() if pyxel.btnp(pyxel.KEY_ENTER): self.scene = SCENE_PLAY self.score = 0 Bullet.n = 3 Bullet.bullet_state = True def draw(self): pyxel.cls(0) if self.scene == SCENE_PLAY: self.draw_play() elif self.scene == SCENE_GAMEOVER: self.draw_gameover() def draw_play(self): draw_list(enemy_list) draw_list(bullet_list) self.player.draw() pyxel.text(2, 2, "SCORE: " + str(self.score), pyxel.COLOR_WHITE) def draw_gameover(self): pyxel.text(48, 40, "GAMEOVER", pyxel.COLOR_WHITE) pyxel.text(42, 55, "RESULT: {}pt".format(self.score), pyxel.COLOR_WHITE) pyxel.text(34, 80, "- PRESS ENTER -", pyxel.COLOR_GRAY) App()

試したこと

ここに問題に対して試したことを記載してください。

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

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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jbpb0

2021/06/07 22:59

> pyxelのバージョンはともに1.4.3で揃っています。 Pythonのバージョンも同じですか?
jbpb0

2021/06/08 00:01 編集

「他人の作ったファイルが実行できなくて困っています。」とは、 pyxel.load('game.pyxres') でエラー出る、ということですよね? Pyxelのサンプルコードの内の一つ https://github.com/kitao/pyxel/blob/master/pyxel/examples/02_jump_game.py には、 pyxel.load("assets/jump_game.pyxres") がありますけど、このサンプルコードの実行でもエラー出るのですか? 上記が大丈夫なら、読めるファイルと読めないファイルがあるのですよね 読めない「game.pyxres」を、質問者さんのMacのpyxel 1.4.3に付属するPyxel Editorで読んで保存し直して、それを読んでもエラー出ますか? 【追記】 https://teratail.com/questions/342412 の「質問への追記・修正の依頼」に、 「pyxelの公式サンプルや、自分が今まで作ったファイルは正常に動きました!」 と書いてるところから、Pyxelのサンプルコードはエラー出ずに実行できるみたいですね

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python

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