0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript】コンプ率チェッカー

Posted at

#はじめに
自分のアウトプットのため、ソーシャルゲームのコンプリートチェッカーを作ることにしました。これはモンストのものになっていますが、画像や名前を差し替えることで他のゲームにも応用が利くと思います。

#起きたエラーについて
Jqueryでクリックイベントを作った際、

                $('img').on('click',
                    function() {

という風に記述しないといけないという点に気づかず結構な時間ハマってしまいました。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script>
        var cards = [
            {
                name: 'シュリンガーラ',
                img: '1.jpg',
            },
            {
                name: 'カルナ',
                img: '2.jpg',
            },
            {
                name: 'ヴィーラ',
                img: '3.jpg',
            },
            {
                name: 'ラウドラ',
                img: '4.jpg',
            },
            {
                name: 'アドゥブタ',
                img: '5.jpg',
            },
            {
                name: 'モラル',
                img: '6.jpg',
            },
            {
                name: 'パラドクス',
                img: '7.jpg',
            },
            {
                name: 'コンプレックス',
                img: '8.jpg',
            },
            {
                name: 'アンチテーゼ',
                img: '9.jpg',
            },
            {
                name: 'ラウドラ',
                img: '10.jpg',
            },
            
        ];
        
        var complete_count = 0;

        function change_image() {
            if ($('#img1').hasClass('click')) {
                $('#img1').removeClass('click');

            }
            else {
                $('#img1').addClass('click');
            }

        }
        
        function initialize() {
            // カードの画像を配置
            $('#container').append('<ul class="card_list"></ul>');

            for (var i = 0; i < cards.length; i ++) {
                var card = cards[i];
                $('.card_list').append('<li></li>');
                $('.card_list li:last-child').append('<img src="' + card.img + '" data-id="' + i + '" id="img' + i + '">');
                $('.card_list li:last-child').append('<p>' + card.name + '</p>');
            }
            
            // トータル件数を表示
            $('#all_count').html(cards.length);
            $('#complete_count').html(complete_count);
            $('#complete_rate').html(complete_count / cards.length * 100);
        }

        $(document).ready(
            function() {
                initialize();

                $('img').on('click',
                    function() {
                        console.log($(this).data('id'));
                        if ($('#img'+$(this).data('id')).hasClass('click')) {
                            $('#img'+$(this).data('id')).removeClass('click');
                            complete_count --;
                        } else {
                            $('#img'+$(this).data('id')).addClass('click');
                            complete_count ++;
                        }
                        $('#complete_count').html(complete_count);
                        
                        $('#complete_rate').html(complete_count / cards.length * 100);
                    }
                );
                

            })
    </script>
    <style>
        .card_list {
            list-style-type: none;
            padding: 0;
            display: flex;
            flex-wrap: wrap;
            text-align: center;
        }
        .card_list li {
            width: 150px;
        }
        .card_list p {
            margin: 0;
        }
        img {
            opacity:0.33;
        }
        .click {
            opacity: 1;
        }
    </style>
</head>

<body>
    <p>モンスト 轟絶コンプ率チェッカー</p>
    <p id="message">全<span id="all_count"></span>種中<span id="complete_count"></span>種(コンプ率<span id="complete_rate"></span>%)</p>
    
    <div id="container"></div>


</body>

</html>

#おわりに
最初はHTML上にimgを置いてクリックでオン/オフができる機能を作るという構想だったのですが、scriptとして扱うことでこの部分の変更だけで他にも使えるように変更しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?