扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 147|回复: 0

[转载发布] 【脚本恢复】猫哥哥·贪吃蛇

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    昨天 18:01
  • 签到天数: 114 天

    连续签到: 4 天

    [LV.6]常住居民II

    2338

    主题

    403

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10627
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13396

    灌水之王

    发表于 2024-4-19 17:55:38 | 显示全部楼层 |阅读模式
    作者:猫哥哥


    如果作者认为此举有任何不妥,PM我,我亲撤下!

       RP爆发!
    今天晚上想试写一下贪吃蛇,没想到很容易就写出来了……不知道有没有bug,欢迎大家debug
    预览图一张:
    1. #==============================================================================##   ●贪吃蛇v1.0#                 by 猫哥哥#                                                       [email][email protected][/email]#============================================================================== class Tanchishe  def initialize           #生成棋盘     @size = 18          @world = []     for i in 1..@size       for j in 1..@size         @world.push([i,j])       end     end         @ox = 60 #原点    @oy = 40         draw_line((@ox/20)-1 ,(@oy/20)-1)        @worm = {}    @food = {}    @balls = []    @key = 6    draw_worm(4,8)    draw_worm(5,8)    draw_worm(6,8)    draw_worm(7,8)    draw_worm(8,8)    draw_worm(9,8)    draw_food    @speed = 5 #值越大,速度越慢    $FENSHU_WORM = 0         #分数      @score2 = Sprite.new      @score2.bitmap = Bitmap.new(200,20)      @score2.x = @ox +350      @score2.y = @oy +330      @score2.bitmap.draw_text(0, 0,200,20,"得分",1)      @score = Sprite.new      @score.bitmap = Bitmap.new(200,40)      @score.x = @ox +350      @score.y = @oy +350      score_refresh #刷新分数            @step = 0      end          def main            loop do        Graphics.update        Input.update        update        if @step == 1          move        end        end    end          def score_refresh      @score.bitmap.clear      @score.bitmap.draw_text(0, 20,200,20,$FENSHU_WORM.to_s,2 )    end    def draw_line(x,y) #描绘边缘      k = []      for i in 0..3         k.push(Sprite.new)      end      k[0].bitmap = Bitmap.new(380,10) #上      k[1].bitmap = Bitmap.new(380,10) #下      k[2].bitmap = Bitmap.new(10,400) #左      k[3].bitmap = Bitmap.new(10,400) #右      for kk in k         rect = kk.bitmap.rect         color = Color.new(205,205,205)         kk.bitmap.fill_rect(rect, color)      end      k[0].x = x*20 + 20      k[0].y = y*20 + 10      k[1].x = x*20 + 20      k[1].y = y*20 + 400      k[2].x = x*20 + 10      k[2].y = y*20 + 10      k[3].x = x*20 + 400      k[3].y = y*20 + 10    end          def draw(x,y) #描绘形状      a = Sprite.new      a.bitmap = Bitmap.new(20,20)      rect = a.bitmap.rect      color = Color.new(255,255,255)      a.bitmap.fill_rect(rect, color)      a.x = x*20      a.y = y*20    end    def dis_worm(x,y)      b = @worm[[x,y]]      b.bitmap.clear      b.dispose      @worm.delete([x,y])      @world.push([x,y])    end    def dis_food      b = @food[1]      b.bitmap.clear      b.dispose      draw_food    end        def move      case @key      when 6      @head = [@balls[0][0]+1,@balls[0][1]]      when 2      @head = [@balls[0][0],@balls[0][1]+1]      when 4      @head = [@balls[0][0]-1,@balls[0][1]]      when 8      @head = [@balls[0][0],@balls[0][1]-1]      end      if @head == @food[0] #吃到食物        $FENSHU_WORM+=9        score_refresh        draw_worm(@head[0],@head[1])        dis_food      elsif @balls.include?(@head) == true #碰到自己身体       finish                                   elsif @head[0]@size or @head[1]@size #碰到边缘       finish                                  else        draw_worm(@head[0],@head[1])        @tail = @balls.pop        dis_worm(@tail[0],@tail[1])      end       wait(@speed)    end        def wait(n)        for i in 0..n           Graphics.update if i > n/2        end    end          def update        if Input.trigger?(Input::C)          @step = 1        end        if Input.trigger?(Input::RIGHT)          if @key == 4            @key = 4          else            @key = 6          end        end        if Input.trigger?(Input::LEFT)          if @key == 6            @key = 6          else            @key = 4          end        end        if Input.trigger?(Input::DOWN)          if @key == 8            @key = 8          else              @key = 2          end        end        if Input.trigger?(Input::UP)          if @key == 2            @key = 2          else            @key = 8          end        end    end    def draw_worm(x,y) #描绘虫      a = Sprite.new      a.bitmap = Bitmap.new(20,20)      rect = a.bitmap.rect      color = Color.new(255,255,255)      color2 = Color.new(155,155,155)      a.bitmap.fill_rect(rect, color)      a.bitmap.fill_rect(0,0,20,2,color2)      a.bitmap.fill_rect(0,18,20,2,color2)      a.bitmap.fill_rect(0,0,2,20,color2)      a.bitmap.fill_rect(18,0,2,20,color2)      a.x = x*20 + @ox      a.y = y*20 + @oy      @worm[[x,y]] = a      @balls.unshift([x,y])      @world.delete([x,y])    end        def draw_food #描绘食物      if @world.size == 0        finish      end        b = @world[rand(@world.size-1)]        a = Sprite.new        a.bitmap = Bitmap.new(20,20)        rect = a.bitmap.rect        color = Color.new(255,255,255)        color2 = Color.new(155,155,155)        a.bitmap.fill_rect(rect, color)        a.bitmap.fill_rect(0,0,20,2,color2)        a.bitmap.fill_rect(0,18,20,2,color2)        a.bitmap.fill_rect(0,0,2,20,color2)        a.bitmap.fill_rect(18,0,2,20,color2)        a.x = b[0]*20 + @ox        a.y = b[1]*20 + @oy        @food = [b,a]    end    def finish      @score2.dispose      @score.dispose      a = "您最后的得分是"      b = $FENSHU_WORM.to_s      c = "分"      p a+b+c      exit #如果不想游戏结束就退出请把这句##掉    endend  #=========================== begin     Font.default_name = (["黑体","宋体"])     a = Tanchishe.new     a.main end复制代码
    复制代码
                本帖来自P1论坛作者yangff,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=68618  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-15 00:48 , Processed in 0.084343 second(s), 55 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表