私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

No.1850  Re[8]:カードトレードと、カード画像の実装を目指して…
発言者: moon
発言日: 2015 08/15 11:19
> # 利用
> # 定義
> カード名が一致していても全てが未定義状態になってしまい…

「# 定義」と「# 利用」の順番が逆になってしまっています。
あと、card_name_hashの定義はハッシュなので「$」ではなく「%」です。

> 「カード画像表示」の定義部分は別の場所に移した方が良いでしょうか?
> 可能であれば、カード画像表示の定義部分は(カード数が増えたことを想定して)別ファイルから読み込むような形をとりたいなとも考えているのですが、難しいでしょうか…?

以下のような別ファイルを作成してrequireで呼び出せば良いです。
なお、返信されたコードに少し修正を加えてあります。

#### ここから ####
my $image_dir = 'img/'; # 画像ディレクトリ
my %card_name_hash = (
'C1カード' => 'test.jpg',
'C2カード' => 'test2.jpg',
'C3カード' => 'test3.jpg',
); # カード名と画像ファイルパスのハッシュ

# 画像のパスを取得する
# 【引数】
# name: カード名
# 【戻り値】
# カード名に対応する画像のパス
sub get_card_image_path{
  my $name = shift;

  my $image_file = exists($card_name_hash{$name}) ? $card_name_hash{$name}:'2011-12-23_1-246.gif';
  # $nameはカード名、未定義の場合は'2011-12-23_1-246.gif'
  return $image_dir . $image_file;
}

1;
#### ここまで ####

利用は以下のようにします。
  require './ディレクトリ/ファイル名'; # ループ中で毎回requireするのは無駄なので場所はforeach以前が良い
  print qq|<tr><td><img src="|, &get_card_image_path($item), qq|"><b>$item</b></td><td>$idd</td><td>$cde1</td></tr> \n|;

> > 先頭行が空なのはデータ的に余計なものが存在するか、先頭に余計なデータが含まれるようにsplitされているか、だと思います。
> > 以下を確認してみてください。
> > ・sub get_cardで正常に読み込まれているか?
> > ・sub cardoutで正常に保存できているか?
> > ・これ以外のサブルーチンでカードファイルを誤って保存していないか?
> > ・何をした後におかしなデータになるか?

すみません、上記のget_card、cardoutと「0000<><>20」に関しては勘違いしておりましてカードファイルだった場合でした。
コレクションなのでsub get_coll、sub fileout、あとsub file_in_afterが関連個所です。

> 自分なりに条件を変えて確認してみたのですが、コレクションファイルを作成した時は問題なく、カードを1枚でもいれると0行ができ…
> ただ現在は何故か入れたカードの最下部に0行が並ぶように;
> 0行の場所が変わったのは下記のように変更したせいかも;
...
> コレクションカードデータの中身は、
> ---------------------
> 0004<>,C2カード△10000264C2,C0カード△00300264C0,C1カード△01000264C1,C3カード△00300264C3,C4カード△00300264C4,C5カード△00300264C5,C6カード△00300264C6,C7カード△00300264C7<>8<>
> ---------------------
> こんな感じになっていました。
> 「,C2カード」が変な気がしたのですが、,がついている理由が分からず…

sub file_in_afterで「&joinitem('iF');」が行われていないか、sub joinitemが変更されていない場合にこのようになりそうですので、これらを確認してみてください。

▼関連発言

1841:カードトレードと、カード画像の実装を目指して… [YOUME] 08/12 15:30
 └1842:Re:カードトレードと、カード画像の実装を目指して... [moon] 08/12 21:47
  └1843:Re[2]:カードトレードと、カード画像の実装を目指.. [moon] 08/12 22:03
   ├1844:Re[3]:カードトレードと、カード画像の実装を目.. [YOUME] 08/12 22:36
   └1845:Re[3]:カードトレードと、カード画像の実装を目.. [YOUME] 08/13 18:45
    └1846:Re[4]:カードトレードと、カード画像の実装を.. [moon] 08/13 20:28
     └1847:Re[5]:カードトレードと、カード画像の実装.. [YOUME] 08/14 09:22
      └1848:Re[6]:カードトレードと、カード画像の実.. [moon] 08/14 12:22
       └1849:Re[7]:カードトレードと、カード画像の.. [YOUME] 08/15 09:52
        └1850:Re[8]:カードトレードと、カード画像.. [moon] 08/15 11:19
         └1851:Re[9]:カードトレードと、カード画.. [YOUME] 08/15 19:58
          └1852:Re[10]:カードトレードと、カー... [moon] 08/15 22:19
           └1853:Re[11]:カードトレードと、カ... [YOUME] 08/16 16:08
            └1855:Re[12]:カードトレードと、... [moon] 08/16 21:42
             └1857:Re[13]:カードトレードと... [YOUME] 08/16 21:49
              └1859:Re[14]:カードトレード... [moon] 08/16 22:00<-last

  返信フォーム [引用]
名 前 保存
題 名
発 言
PASSWORD
投稿確認必ずチェックを入れてください。こちらにはチェックを入れないでください。
書き込む
◇題名は、短くわかりやすく書いてください。
◇過去に同じ内容が投稿されていないか検索してから書き込んで下さい。
◇管理人の判断により相応しくない投稿は削除します。

Pass 保存


CGIROOM