Code game xếp chữ cho Wap4

Code này mình viết và test khá là ok. Chỉ có điều là khi bạn đang chơi mà thoát khỏi trang thì khi bạn vào lại trang thì con bot mới thông báo đáp án đó =)). Code xếp chữ auto load, và tất nhiên rồi, bạn phải chat lệnh thì mới hiện câu hỏi.


Và sau đây là code, các bạn có thể tham khảo và tùy biến lại theo func của chính mình.

Đầu tiên các bạn tạo file xc.php:

{% import '_functions' as func %}

{% from '_functions' import get,ago,bbcode %}

{% import '_avatar' as avatar %}

{% import 'chat_module_bot' as bot %}

{% set login = func.signin()|trim %}

{% set name = login %}

{% set ubot = get_data('user_apple')[0].data|json_decode %}

{% set id = func.get('xep_chu')|split('@')[19]|trim %}

{% set msg = get_post('msg') %}

{% set now = "now"|date("U") %}

{% if msg != '' and msg != '\r\n' and msg!=null %}

{% set comment = {"name" :name,"time":now,"comment":msg} %}

{% if 'xep chu @apple' not in msg|lower and 'xếp chữ @apple' not in msg|lower %}

{{func.add('xc_'~id,'name',name)}}

{{func.add('xc_'~id,'time',now)}}

{{func.add('xc_'~id,'comment',msg)}}

{{func.up('xep_chu',id,'up') }}

{% endif %}

{{func.add('user_'~login,'old',msg)}}

{{func.add('user_'~login,'postguest',get('user_'~login,'postguest')|trim+1)}}

{{bot.xepchu(msg,'apple')}}

{% endif %}

{% set data= func.get('xep_chu')|trim|split('@') %}

{% set total=data|length-1 %}

{% set page_max=total//10 %}

{% if total//10 != total/10 %}

{% set page_max=total//10+1 %}

{% endif %}

{% set url=get_uri_segments() %}

{% set p=url[1]|default(1) %}


{% if p matches '/[a-zA-z]|%/' or p<1 %}

{% set p=1 %}

{% endif %}

{% if p>page_max %}

{% set p=page_max %}

{% endif %}

{% set st=p*10-10 %}

{% if ubot['xc'].time >= "now"|date("U") %}

<div class="rmenu" align="center">

{% if ubot['xc'].time=="now"|date("U") %}

Hết giờ !!!

{% else %}

Sắp xếp các chữ sau thành từ hoặc cụm từ hoàn chỉnh:<br/>{{ubot['xc'].quest}}

<br/>{% for k in (ubot['xc'].raw_word)|split('') %}{% if k != ' ' %}<font style="font-size:20px;letter-spacing:6px;">{% if (ubot['xc'].time)-("now"|date("U")) <= (loop.index-2)*(100/(ubot['xc'].raw_word|length)) %}{{k}}{% else %}*{% endif %}</font>{% else %}{{k}}{% endif %}{% endfor %}

<br/>Còn: {{(ubot['xc'].time)-("now"|date("U"))}} giây nữa

{% endif %}

</div>

{% endif %}


{% for id in data|slice(0,total)|slice(st,10) %}

{% set entry = get_data('xc_'~id|trim)[0].data|json_decode %}

{% set user='user_'~entry.name %}

{% set info=get_data(user)[0].data|json_decode %}

{% set nd = entry.comment %}

{% set time = entry.time %}

{% set jun = now-time %}

{% if jun > 1 %}

{% set agos = ago(time) %}

{% else %}

{% set agos = 'vừa xong' %}

{% endif %}

{% if entry.name %}

<div class="comment-head"> <a href="/user/{{entry.name}}.html">

{% if func.get(user,'ban') =='1' %}<s>{{get(user,'name')}}</s>{% else %}{{avatar.mau_nick(entry.name,info.right)}}{% endif %}

</a> <span class="comment-time"><i class="fa fa-clock-o"></i> {{agos}} </span></div><div class="menu comment-content"> {{bbcode(nd|raw)}}{% if login!=entry.name %} <br/><div align="right"><a href="javascript:tag('@{{entry.name}} ', '')">[ Tag ]</a></div>{% endif %}</div>

{% endif %}

{% endfor %}

{% if ubot['xc'].time < "now"|date("U") and ubot['xc'].end != 'yes' %}

{% set id = func.get('xep_chu')|split('@')[19]|trim %}

{{func.add('xc_'~id,'name','apple')}}

{{func.add('xc_'~id,'time',ubot['xc'].time)}}

{{func.add('xc_'~id,'comment','Rất tiếc, không có ai trả lời đúng câu hỏi vừa rồi. Đáp án đúng là: [b]'~ubot['xc'].word~'[/b]')}}

{{func.add('user_apple','xc',{"id":ubot['xc'].id|trim,"time":"now"|date("U"),"word":xc.word,"raw_word":xc.raw_word,"end":"yes"})}}

{{func.up('xep_chu',id,'up') }}

{% endif %}

{% if login and login not in func.get('show_online')|split('@') %}

{{func.up('show_online',login,'up')}}

{% endif %}


Tiếp theo là file xc:

{% use '_includes_forum' %}

{% import '_functions' as func %}

{% import '_avatar' as avatar %}

{% set url = get_uri_segments() %}

{% set signin = func.signin()|trim %}

{% set bot = 'apple' %}

{% set user = get_data('user_'~signin)[0].data|json_decode %}

{% set total = user['smile']|trim|split('.')|length-1 %}

{% set ubot = get_data('user_apple')[0].data|json_decode %}

{% set xc = ubot['xc'] %}

{% set run = get_data('forum')[0].data|json_decode %}

{% set title = 'Xếp chữ online' %}

{% if signin %}

{{block('head')}}

{% set login = func.signin()|trim %}

{% if login %}

{% if get_data_count('xep_chu')==0 %}

{% for i in 1..20 %}

{% set save=save_data('xc_'~i,{"name" :login,"time":'now'|date('U'),"comment":"tôi yêu việt nam"}|json_encode) %}

{% endfor %}

{% set save=save_data('xep_chu',' 20 @ 19 @ 18 @ 17 @ 16 @ 15 @ 14 @ 13 @ 12 @ 11 @ 10 @ 9 @ 8 @ 7 @ 6 @ 5 @ 4 @ 3 @ 2 @ 1 @ ') %}

{% endif %}

<div class="phdr"><a href="/games"><b>Khu giải trí</b></a> » Xếp chữ</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.7.0/jquery.validate.min.js"></script>

<script type="text/javascript">var chatbox="../xc.php",loadcontent='<div class="menuItem">Đang tải dữ liệu <i class="fa fa-hourglass-half"></i></div>';$(document).ready(function(){$("#idChat").html(loadcontent),$.get(chatbox,function(t){$("#idChat").html(t).hide().slideDown("slow")}),reload_chat=setInterval(function(){$.get(chatbox,function(t){$("#idChat").html(t)})},4e3);var e=$("#form"),i=$("#submit"),o=$("#alert"),a=$("#postText");e.on("submit",function(t){if(t.preventDefault(),""==a)return o.show(),o.text("Bạn chưa nhập nội dung !!!"),$("#postText").focus(),!1;$.ajax({url:"../xc.php",type:"POST",timeout:4e3,dataType:"html",data:e.serialize(),beforeSend:function(){o.fadeOut(),i.html('Đang xử lí <i class="fa fa-hourglass-half"></i>')},success:function(t){$.get(chatbox,function(t){$("#idChat").html(t).hide().slideDown("slow")}),e.trigger("reset"),$("#postText").focus(),$("#postText").val(""),i.html('<i class="fa fa-check"></i> Chat')},error:function(t){console.log(t)}})})});</script>

{% set token = random(100000) %}

<div class="room"><div class="menu-room"><table width="100%" border="0"><tr><td width="80%"> <form id="form" action="" method="POST" name="form"><textarea type= "text" id="postText" name="msg" placeholder="Chat lệnh: xep chu @{{bot}} để bắt đầu. Nếu xảy ra lỗi khi chơi xếp chữ, xin hãy làm mới lại trang để khắc phục sự cố!" rows="5"></textarea><a class="sub3" href="javascript:tag('xep chu @apple','')"><i class="fa fa-gamepad" aria-hidden="true"></i></a><a class="sub3" href="javascript:show_hide('sm');"><i class="fa fa-smile-o" aria-hidden="true"></i></a><a class="sub3" href="/xc"><i class="fa fa-refresh" aria-hidden="true"></i></a><button name="submit" type="submit" id="submit">Gửi</button><input type="hidden" name="token" value="{{token}}"/></form></div></td></tr></table></div><div id="sm" style="display:none">{% if user['smile']!='' and (user['smile']|trim|split('.')|length-1) >= 1 %}{% for i in 1..total %}{% set i = i|trim-1 %}<a href="javascript:tag(':{{user['smile']|trim|split('.')[i]}}', ':'); show_hide('sm');"><img src="https://moleys.github.io/assets/images/{{user['smile']|trim|split('.')[i]}}.png" width="50px" /></a>{% endfor %}<div><a href="/smile">[ Xem thêm Smile ]</a></div>{% else %}<a href="javascript:tag(':pepe{{i}}', ':'); show_hide('sm');">Bạn chưa có smile cá nhân. <a href="/smile">[ + Thêm mới ]</a>{% endif %}</div></div>

<div id="alert"></div>

<div id="postText"></div>

<div id="idChat"></div>


{% endif %}

{{block('end')}}

{% else %}

{% include 'login.php' %}

{% endif %}


Và cuối cùng là thêm đoạn code sau vào file tạo hàm của các bạn, của mình là chat_module_bot:

{% macro xepchu(doc,bot) %}

{% from '_functions' import get,add,login,up %}

{% import '_functions' as func %}

{% set login = login()|trim %}

{% set log = get('user_'~login,'nick') %}

{% set ubot = get_data('user_'~bot)[0].data|json_decode %}

{% set xc = ubot['xc'] %}

{% set countdown = (ubot['xc'].time)-("now"|date("U")) %}

{% set time_answer = 100-countdown %}

{% set xu = 10*countdown %}

{% set list = {"cau1":"Hoàng Văn Thụ","cau2":"trung học"} %}

{% set rd = random(1..2) %}

{% set key = "cau"~rd %}

{% set text=func.rwurl(list[key])|replace({"-":" "}) %}

{%set quest="" %}

{% for i in 0..text|length-1 %}

{% set arr = text|split('') %}

{% set rand = random(text|length-1) %}

{% set quest= quest~arr[rand] %}

{% set text = (arr[:rand]|join('')~arr[(rand+1):]|join('')) %}

{% endfor %}

{% set end = list[key] %}

{% set raw_end = func.rwurl(end)|replace({"-":" "}) %}

{% set time_start = 'now'|date('U') %}

{% set id = get('xep_chu')|split('@')[19]|trim %}

{% if 'xep chu @'~bot in doc|lower and xc.time < time_start or 'xếp chữ @'~bot in doc|lower and xc.time < time_start %}

{{add('user_'~bot,'xc',{"id":xc.id|trim+1,"time":"now"|date("U")+100,"word":end,"raw_word":raw_end,"end":"no","quest":''~quest~''})}}

{% endif %}

{% if xc['word'] in doc|lower and xc.time >= time_start or xc['raw_word'] in doc|lower and xc.time >= time_start %}

{% if xc.time > time_start %}

{{add('user_'~login,'xc',get('user_'~login,'xc')|trim+1)}}

{{add('user_'~login,'xu',get('user_'~login,'xu')|trim+xu)}}

{{add('user_'~bot,'xu',get('user_'~bot,'xu')|trim-xu)}}

{{add('xc_'~id,'name',bot)}}

{{add('xc_'~id,'time','now'|date('U'))}}

{{add('xc_'~id,'comment','Chúc mừng @'~login~' đã trả lời đúng câu hỏi vừa rồi trong '~time_answer~' giây ! Bạn nhận được [b]'~xu~'[/b] xu từ @'~bot~' !')}}

{{up('xep_chu',id,'up') }}

{{add('user_'~bot,'xc',{"id":xc.id|trim,"time":"now"|date("U"),"word":xc.word,"raw_word":xc.raw_word,"end":"yes"})}}

{{add('user_'~bot,'postguest',get('user_'~bot,'postguest')|trim+1)}}

{% endif %}

{% endif %}

{% endmacro %}


Thêm từ:

{% set list = {"cau1":"Hoàng Văn Thụ","cau2":"trung học"} %}

{% set rd = random(1..2) %}

Lệnh chat: xep chu @<bot> (Vd: xep chu @ apple)


Demo: http://z3xvn.viwap.com


Bài viết được viết tại: https://cafedang.gq, copy vui lòng ghi rõ nguồn!