自家娃口算不好 昨晚搞了一个口算的游戏

cmspro  (UID: 93971) [复制链接]
帖子链接已复制到剪贴板
帖子已经有人评论啦,不支持删除!

591 14

在线地址:http://kousuan.20130314.com/  注册个账号就可以玩了,自动兼容PC和移动端。

谁家娃口算不好的,可以给他用下。


应用源码可到这里下载:
有截图预览。
https://www.cmspro.cn/apps/cmspro.rabbitmath

cmspro.cn - 牛逼克拉斯的万能CMS
已有评论 ( 14 )
  • 头像
    V wwwroot (UID: 4691)
    ([工商注册] 营业执照/各种许可证/地址挂靠/资质挂靠[国企背书] 小程序开发[488元]/营业执照年检年报,公司代账报税[一般纳税人400/年] 平面设计/广告印刷/全国广告安装,3D打印/锦旗/挽联,JS解密/小程序反编译/渗透测试等。)
    1楼

    想当年我口算不好都是皮带伺候,慢慢就好了表情

  • 头像
    cmspro (UID: 93971)
    (cmspro.cn - 牛逼克拉斯的万能CMS)
    2楼

    昨晚花了几小时,今天又优化调整了一上午。

     

    现在有AI以后,发现好多程序想想就能搞出来

  • 头像
    cmspro (UID: 93971)
    (cmspro.cn - 牛逼克拉斯的万能CMS)
    3楼
    wwwroot 想当年我口算不好都是皮带伺候,慢慢就好了表情

    打也打了,骂也骂了。两个个位数相加减都能做到耗费几分钟计算,不知道是云游了还是怎么了。

     

    让它当游戏玩得了。

  • 头像
    淡 (UID: 5576)
    (V: oranable 米表: DomainFor.Sale)
    4楼

    有个  brain.training,脑力训练,开发中,现在只有算术

  • 头像
    朹方 V11 (UID: 1616)
    (zmoe.com-我的博客)
    5楼

    咋说呢,既然你都用上AI了,其实也可以把你家孩子情况告诉AI帮你分析分析

  • 头像
    cmspro (UID: 93971)
    (cmspro.cn - 牛逼克拉斯的万能CMS)
    6楼
    朹方 咋说呢,既然你都用上AI了,其实也可以把你家孩子情况告诉AI帮你分析分析

    表情  AI不是万能的,分析来分析去还不是  模板照搬。

  • 头像
    V Eno (UID: 59093)
    (Hi)
    7楼

    用了这个遥遥领先

    自动刷题

    import requests
    import time
    import random
    import threading
    from typing import List, Dict
    from concurrent.futures import ThreadPoolExecutor, as_completed
    
    class RabbitMathGame:
        def __init__(self, csrf_token: str, cookie: str):
            self.base_url = "http://kousuan.20130314.com"
            self.session = requests.Session()
            self.session.headers.update({
                "User-Agent": "Mozilla/5.0 (Linux; Android 10; V1938CT Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",
                "Accept": "*/*",
                "X-Requested-With": "XMLHttpRequest",
                "Origin": self.base_url,
                "Referer": f"{self.base_url}/game",
                "Accept-Encoding": "gzip, deflate",
                "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
                "X-CSRF-TOKEN": csrf_token,
                "Cookie": cookie
            })
            # 统计信息
            self.success_count = 0
            self.fail_count = 0
            self.total_requests = 0
            self.lock = threading.Lock()
        
        def start_game(self) -> Dict:
            """开始游戏,获取题目"""
            url = f"{self.base_url}/api/rabbitmath/game/start"
            response = self.session.post(url, timeout=5)
            return response.json()
        
        def submit_answers(self, record_id: int, answers: List[int], duration: int) -> Dict:
            """提交答案"""
            url = f"{self.base_url}/api/rabbitmath/game/submit"
            data = {
                "record_id": record_id,
                "duration": duration
            }
            for i, ans in enumerate(answers):
                data[f"answers[{i}]"] = ans
            
            response = self.session.post(url, data=data, timeout=5)
            return response.json()
        
        def auto_play(self, round_num: int) -> bool:
            """自动完成一轮游戏"""
            try:
                # 开始游戏
                start_resp = self.start_game()
                
                if start_resp.get("code") != 0:
                    with self.lock:
                        self.fail_count += 1
                        self.total_requests += 1
                    return False
                
                data = start_resp.get("data", {})
                questions = data.get("questions", [])
                record_id = data.get("record_id")
                
                # 提取答案
                answers = [q.get("answer") for q in questions]
                
                # 快速答题(几乎不耗时)
                duration = 1  # 最少1秒
                
                # 提交答案
                submit_resp = self.submit_answers(record_id, answers, duration)
                
                with self.lock:
                    self.total_requests += 1
                    if submit_resp.get("code") == 0 and submit_resp.get("data", {}).get("is_passed", False):
                        self.success_count += 1
                        return True
                    else:
                        self.fail_count += 1
                        return False
                
            except Exception as e:
                with self.lock:
                    self.fail_count += 1
                    self.total_requests += 1
                return False
    
    
    def worker(game: RabbitMathGame, round_num: int):
        """工作线程"""
        return game.auto_play(round_num)
    
    
    def main():
        # 替换为你的token和cookie
        CSRF_TOKEN = "Q0guXGXovwMiAD3JxhzrW5QcpjtwtdalkL9P34qL"
        COOKIE = "XSRF-TOKEN=eyJpdiI6ImxCUnBTaVBYZ0dnREpPc0QzeHdIc2c9PSIsInZhbHVlIjoicnFVYVVQRVhrMncwQitnZ3R6ckVaSVczQkhiaVNmZFdXc2NXMEdONEJaQVlJdUtXRTFsNjA3SGRUWlBGU2MzdTJ0TmpPK1hZQlpEdW1HcHB3cnVNdG9LM3duNWxPNlR1ZVlxUWpRZ0hvOStRSkMzcUNOWjdCb3I5RzFTRjgxSm8iLCJtYWMiOiI1YTRjZWYzNTA5ZmUwZGJhNTZhMzUzM2U2MzZjZmI1YmM3N2MzYjFmMWZkODI0NGI3ZjQ5YzM5NDUzYWE4M2MzIiwidGFnIjoiIn0%3D; cmspro_session_20130314_com=eyJpdiI6InVHdnNYU0QwYXNBZUNyb3RQQnFBOXc9PSIsInZhbHVlIjoiaG9kVXRxL28zQzM0cnN2dUpqQmV5aUpMVnRWT0dlam8wWHBVVnFlM2x2TENjRHk4OERRSGo2SGhTb0JmSkdhVnBkbEI3MGszVTRGdkd5VGZCZ3NTU01ubjgxbzdQUFNrSkI0R1RaT2ROemVPcEJybWk4WHEyTmF5eFV6bjIxdkkiLCJtYWMiOiI1MmU0YjE0YjZjNmI3NzNkY2Q0OTg0OTIwZmVjYTU5NWFkMmU0ZTIwZGU1YWEzZGVmMzI0ZWZhMWI1ZmNlNGUzIiwidGFnIjoiIn0%3D"
        
        game = RabbitMathGame(CSRF_TOKEN, COOKIE)
        
        # 目标:100次请求,每秒10次
        total_requests = 100
        requests_per_second = 10
        max_workers = 10  # 并发线程数
        
        print("🐰 开始高频刷题...")
        print(f"目标: {total_requests} 次请求")
        print(f"速率: {requests_per_second} 次/秒")
        print(f"并发线程: {max_workers}")
        print(f"开始时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
        print("="*50)
        
        start_time = time.time()
        
        # 使用线程池并发执行
        with ThreadPoolExecutor(max_workers=max_workers) as executor:
            futures = []
            
            # 提交所有任务
            for i in range(1, total_requests + 1):
                future = executor.submit(worker, game, i)
                futures.append(future)
                
                # 控制每秒提交数量(每秒10个)
                if i % requests_per_second == 0:
                    time.sleep(1)  # 每10个任务等待1秒
            
            # 等待所有任务完成
            completed = 0
            for future in as_completed(futures):
                completed += 1
                if completed % 10 == 0:
                    print(f"进度: {completed}/{total_requests}")
        
        # 统计结果
        elapsed_time = time.time() - start_time
        print("\n" + "="*50)
        print("📊 最终统计")
        print("="*50)
        print(f"总请求: {game.total_requests}")
        print(f"成功: {game.success_count} 次 ({game.success_count/game.total_requests*100:.1f}%)")
        print(f"失败: {game.fail_count} 次 ({game.fail_count/game.total_requests*100:.1f}%)")
        print(f"总耗时: {elapsed_time:.2f} 秒")
        print(f"实际速率: {game.total_requests/elapsed_time:.2f} 次/秒")
        print(f"结束时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
    
    
    if __name__ == "__main__":
        main()

    自动喂食

    import requests
    import time
    import random
    import signal
    import sys
    from typing import Dict
    
    class RabbitFeed:
        def __init__(self, csrf_token: str, cookie: str):
            self.base_url = "http://kousuan.20130314.com"
            self.session = requests.Session()
            self.session.headers.update({
                "User-Agent": "Mozilla/5.0 (Linux; Android 10; V1938CT Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",
                "Accept": "*/*",
                "X-Requested-With": "XMLHttpRequest",
                "Origin": self.base_url,
                "Referer": f"{self.base_url}/rabbit",
                "Accept-Encoding": "gzip, deflate",
                "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
                "X-CSRF-TOKEN": csrf_token,
                "Cookie": cookie,
                "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
            })
            self.running = True
            self.total_feeds = 0
            self.success_feeds = 0
            self.fail_feeds = 0
            
            # 注册信号处理
            signal.signal(signal.SIGINT, self.signal_handler)
            signal.signal(signal.SIGTERM, self.signal_handler)
        
        def signal_handler(self, sig, frame):
            """处理Ctrl+C退出"""
            print("\n\n⚠️  收到停止信号,正在退出...")
            self.running = False
        
        def feed_rabbit(self, food_type: str) -> Dict:
            """喂兔子"""
            url = f"{self.base_url}/api/rabbitmath/rabbit/feed"
            data = {"food_type": food_type}
            response = self.session.post(url, data=data, timeout=5)
            return response.json()
        
        def feed_forever(self):
            """无限循环喂食"""
            food_types = ["milk", "carrot"]
            food_names = {"milk": "🥛 牛奶", "carrot": "🥕 胡萝卜"}
            food_emojis = {"milk": "🥛", "carrot": "🥕"}
            
            print("🐰 开始无限喂食模式...")
            print("按 Ctrl+C 停止")
            print("="*50)
            
            start_time = time.time()
            last_status_time = time.time()
            
            while self.running:
                try:
                    # 随机选择食物
                    food_type = random.choice(food_types)
                    food_name = food_names[food_type]
                    emoji = food_emojis[food_type]
                    
                    # 喂食
                    resp = self.feed_rabbit(food_type)
                    
                    if resp.get("code") == 0:
                        self.success_feeds += 1
                        self.total_feeds += 1
                        
                        data = resp.get("data", {})
                        food_remain = data.get("food_remain", {})
                        
                        # 获取剩余数量
                        milk_remain = food_remain.get("milk", "?")
                        carrot_remain = food_remain.get("carrot", "?")
                        
                        # 每10次显示一次详细信息
                        if self.total_feeds % 10 == 0:
                            elapsed = time.time() - start_time
                            rate = self.total_feeds / elapsed if elapsed > 0 else 0
                            print(f"\n📊 统计: 总喂食 {self.total_feeds} 次 | 速率 {rate:.1f} 次/秒 | 🥛:{milk_remain} 🥕:{carrot_remain}")
                        
                        # 每次都显示喂了什么
                        print(f"  ✅ {emoji} 喂 {food_name} 成功 | 🥛:{milk_remain} 🥕:{carrot_remain}")
                        
                        # 如果某食物为0,换另一种
                        if milk_remain == 0 and food_type == "milk":
                            print(f"  ⚠️  🥛 牛奶已用完,切换到 🥕 胡萝卜")
                            food_type = "carrot"
                        elif carrot_remain == 0 and food_type == "carrot":
                            print(f"  ⚠️  🥕 胡萝卜已用完,切换到 🥛 牛奶")
                            food_type = "milk"
                        
                        # 如果两种都为0,等待刷新
                        if milk_remain == 0 and carrot_remain == 0:
                            print("  ⏳ 所有食物已用完,等待30秒刷新...")
                            time.sleep(30)
                            continue
                        
                    else:
                        self.fail_feeds += 1
                        self.total_feeds += 1
                        error_msg = resp.get("message", "未知错误")
                        print(f"  ❌ 喂食失败: {error_msg}")
                        
                        # 如果是食物不足,等待一段时间
                        if "不足" in error_msg or "没有" in error_msg:
                            print(f"  ⏳ 等待10秒后继续...")
                            time.sleep(10)
                            continue
                    
                    # 每次间隔0.3-0.8秒
                    time.sleep(random.uniform(0.3, 0.8))
                    
                except requests.exceptions.RequestException as e:
                    print(f"  ❌ 网络错误: {str(e)}")
                    print(f"  ⏳ 等待5秒后重试...")
                    time.sleep(5)
                    continue
                except Exception as e:
                    print(f"  ❌ 异常: {str(e)}")
                    print(f"  ⏳ 等待3秒后继续...")
                    time.sleep(3)
                    continue
            
            # 退出统计
            elapsed = time.time() - start_time
            print("\n" + "="*50)
            print("📊 喂食统计")
            print("="*50)
            print(f"总喂食次数: {self.total_feeds}")
            print(f"成功: {self.success_feeds} 次")
            print(f"失败: {self.fail_feeds} 次")
            print(f"成功率: {self.success_feeds/self.total_feeds*100:.1f}%" if self.total_feeds > 0 else "成功率: 0%")
            print(f"总运行时间: {elapsed:.1f} 秒")
            print(f"平均速率: {self.total_feeds/elapsed:.2f} 次/秒" if elapsed > 0 else "平均速率: 0")
            print("="*50)
    
    
    def main():
        # 从最新的请求中提取的token和cookie
        CSRF_TOKEN = "Q0guXGXovwMiAD3JxhzrW5QcpjtwtdalkL9P34qL"
        COOKIE = "XSRF-TOKEN=eyJpdiI6ImEybmt5Y096R2hqOUladnlOWXNUNHc9PSIsInZhbHVlIjoiSDBPQTZOdENxNU9SdlEzUjN3SXRFcE92Z3lwUjBDbXNmMnJsWE9KRnJqelZOY2NlN2JyUGRkZzBBVHRSVmdrb0dPaEEzTFBhZUExbDRxS2tjS2RLaUVXTUdkTUNzOGhtM3Z5amM5SmlvcnpqY0xraEpoejRQSUxZb09lcFI3QnoiLCJtYWMiOiI5MDYxMjc5MWUyZTJlMjEyY2JhNDBkOGJhOWNhMzcyNGIzZmQ4NWU4MDQxMjUzYzNmYzZjMGE4M2MxM2NjYWM5IiwidGFnIjoiIn0%3D; cmspro_session_20130314_com=eyJpdiI6ImNOL09SUGorSi9DUWFuK1VRTTFjZ2c9PSIsInZhbHVlIjoiRjVwdDFMejlkSmtlRXVIckswVG81c0tQT1FuSkVMK2ppancwVXFjeGYybU9NbVptMDJMbDRSSDNRU2w0bEUzN2FMM0EzMXE2R28zQTk1ZDBCOXpnSVE5Z3hhUU1nMk5jblZaZkNGeENhd0pCb2xHTW1NUFh0blZFNjg3Nit4dzUiLCJtYWMiOiI0Yzc4ZmY2ZDJlZTc3NzAwODBiYjE1YTk4ZTFlNTkwYzY5NzJkMjU1N2Y2ZWY1NGFmNGM3ZTk5NzY0MzFhMzhhIiwidGFnIjoiIn0%3D"
        
        # 创建喂食实例
        feeder = RabbitFeed(CSRF_TOKEN, COOKIE)
        
        # 开始无限喂食
        feeder.feed_forever()
    
    
    if __name__ == "__main__":
        main()
  • 头像
    V wwwroot (UID: 4691)
    ([工商注册] 营业执照/各种许可证/地址挂靠/资质挂靠[国企背书] 小程序开发[488元]/营业执照年检年报,公司代账报税[一般纳税人400/年] 平面设计/广告印刷/全国广告安装,3D打印/锦旗/挽联,JS解密/小程序反编译/渗透测试等。)
    8楼
    Eno 用了这个遥遥领先 自动刷题 import requests import time import random import threading from typing import List, Di ...

    666、有无浏览器f12控制台执行脚本表情

  • 头像
    V wwwroot (UID: 4691)
    ([工商注册] 营业执照/各种许可证/地址挂靠/资质挂靠[国企背书] 小程序开发[488元]/营业执照年检年报,公司代账报税[一般纳税人400/年] 平面设计/广告印刷/全国广告安装,3D打印/锦旗/挽联,JS解密/小程序反编译/渗透测试等。)
    9楼
    cmspro 打也打了,骂也骂了。两个个位数相加减都能做到耗费几分钟计算,不知道是云游了还是怎么了。 让它当游戏玩得了。

    好吧表情

    只好如此了,我家孩子还没到这个年纪表情

  • 头像
    cmspro (UID: 93971)
    (cmspro.cn - 牛逼克拉斯的万能CMS)
    10楼
    Eno 用了这个遥遥领先 自动刷题 import requests import time import random import threading from typing import List, Di ...

    表情  这……    有必要么。

  • 头像
    cmspro (UID: 93971)
    (cmspro.cn - 牛逼克拉斯的万能CMS)
    11楼
    Eno 用了这个遥遥领先 自动刷题 import requests import time import random import threading from typing import List, Di ...

    表情  我再增加个频率限制和每日答题限制就可以完全规避了。

     

    其实没必要,谁家娃口算都不利索的会用程序。表情

  • 头像
    sievr (UID: 295)
    12楼

    感觉这个做成APP很好玩啊

  • 头像
    cmspro (UID: 93971)
    (cmspro.cn - 牛逼克拉斯的万能CMS)
    13楼
    sievr 感觉这个做成APP很好玩啊

    可以套个壳就可以当成APP了。其实就是做个自己用的,没必要搞成APP,浏览器打开就行,随时随地。

    有需要的可以自己下载自己魔改。

  • 头像
    vlogcc (UID: 67055)
    14楼

    不错

域名市场
   域名载入中...
创建新帖
自助推广购买广告位
确认删除
确定要删除这篇帖子吗?删除后将无法恢复。
删除成功
帖子已成功删除,页面将自动刷新。
删除失败
删除帖子时发生错误,请稍后再试。