pyxelにはhtmlに変換してブラウザ上で動かす機能があります。

 

ところが、やってみるとhtmlファイルに変換されるんですが、実際に動かそうとすると

「CLICK TO START」のクリック後エラーが発生してゲームが起動しない場合があります。

 

原因を調べてみると、pyxel以外のimportで取り込んだ機能がhtmlに変換する際に何かしらの不具合を起こしているみたいです。

何が使えて何が使えないかまでは把握出来ていないんですが、少なくとも私の環境では七並べの場合は「random」「numpy」を外すことで動く様になりました。

 

あと保険的な意味合いが強いですが、「フォルダ名やファイル名日本語を使用するのを止めた方が良さそう」みたいな記事があったので、念のためやっておこうと思います。プログラム内でタイトル等に日本語を使う分には問題無さそうです。

 

改修後の七並べのソースをGoogleドキュメントに載せました。

七並べ改(Googleドキュメント)

 

山札作成クラスも改修版を載せました。

c102Yamafuda.py(Googleドキュメント)

 

以下は旧ソースと改修後ソースの比較です。

・七並べメインソース

-旧七並べソース(一部抜粋)------------------------------------------------------

import pyxel as px

import numpy as np

 

from c101Yamafuda import Yamafuda

-------------------------------------------------------

-改修後(一部抜粋)------------------------------------------------------

import pyxel as px

 

from c102Yamafuda import Yamafuda

-------------------------------------------------------

numpyのimport行を削除

山札作成クラスのファイル名変更に対応

 

-旧七並べソース(一部抜粋)------------------------------------------------------

        px.load("0102七並べ.pyxres")                #リソースファイルロード

-------------------------------------------------------

-改修後(一部抜粋)------------------------------------------------------

        px.load("T102sevens.pyxres")                #リソースファイルロード

-------------------------------------------------------

リソースファイルのファイル名変更に対応

 

-旧七並べソース(一部抜粋)------------------------------------------------------

        self.ply=np.sort(self.ply).tolist()  #手札をソート

-------------------------------------------------------

-改修後(一部抜粋)------------------------------------------------------

        self.ply=[sorted(i) for i in self.ply]

-------------------------------------------------------

numpyのソート機能を標準のソート機能に変更(3箇所)

 

 

・山札作成クラスソース

旧ファイルをコピーしてファイル名を変更

c101Yamafuda.pyc102Yamafuda.py

 

-旧山札作成クラスソース(一部抜粋)------------------------------------------------------

import random as rnd

-------------------------------------------------------

-改修後(一部抜粋)------------------------------------------------------

import pyxel as px

-------------------------------------------------------

randomのimportpyxelに変更

 

-旧山札作成クラスソース(一部抜粋)------------------------------------------------------

        #カードシャッフル

        rnd.shuffle(card)

-------------------------------------------------------

-改修後(一部抜粋)------------------------------------------------------

        #カードシャッフル

        for i in range(len(card)):

            r=px.rndi(0,len(card)-1)

            card[i],card[r]=card[r],card[i]

-------------------------------------------------------

randomのshufflepyxelの乱数を使用したロジックに変更

 

 

・リソースファイル

旧ファイルをコピーしてファイル名を変更

0102七並べ.pyxresT102sevens.pyxres

 

 

上記の対応を行って新ソースでhtml版を作成した結果、ブラウザで動く様になりました

この画像はGoogle Chromeですが、Microsoft Edgeでも動作確認しました。

 

今後pyxelでゲームを作る際は、pythonの標準機能pyxelでサポートされている機能を使用する様にして、メジャーな機能でも極力importは使わない様にしていこうと思います。

 

以上です。