设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3229|回复: 8
打印 上一主题 下一主题

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

 关闭 [复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

跳转到指定楼层
1
发表于 2007-12-16 06:21:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
作者:猫哥哥


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

   RP爆发!
今天晚上想试写一下贪吃蛇,没想到很容易就写出来了……不知道有没有bug,欢迎大家debug
预览图一张:

  1. #==============================================================================
  2. #
  3. #   ●贪吃蛇v1.0
  4. #                 by 猫哥哥
  5. #                                                       [email][email protected][/email]
  6. #==============================================================================
  7. class Tanchishe

  8.   def initialize  
  9.    
  10.      #生成棋盘
  11.      @size = 18
  12.      
  13.      @world = []
  14.      for i in 1..@size
  15.        for j in 1..@size
  16.          @world.push([i,j])
  17.        end
  18.      end
  19.      
  20.     @ox = 60 #原点
  21.     @oy = 40
  22.      
  23.     draw_line((@ox/20)-1 ,(@oy/20)-1)
  24.    
  25.     @worm = {}
  26.     @food = {}
  27.     @balls = []
  28.     @key = 6
  29.     draw_worm(4,8)
  30.     draw_worm(5,8)
  31.     draw_worm(6,8)
  32.     draw_worm(7,8)
  33.     draw_worm(8,8)
  34.     draw_worm(9,8)
  35.     draw_food

  36.     @speed = 5 #值越大,速度越慢

  37.     $FENSHU_WORM = 0
  38.    
  39.      #分数
  40.       @score2 = Sprite.new
  41.       @score2.bitmap = Bitmap.new(200,20)
  42.       @score2.x = @ox +350
  43.       @score2.y = @oy +330
  44.       @score2.bitmap.draw_text(0, 0,200,20,"得分",1)
  45.       @score = Sprite.new
  46.       @score.bitmap = Bitmap.new(200,40)
  47.       @score.x = @ox +350
  48.       @score.y = @oy +350
  49.       score_refresh #刷新分数
  50.       
  51.       @step = 0
  52.       end
  53.       
  54.     def main
  55.       
  56.       loop do
  57.         Graphics.update
  58.         Input.update
  59.         update
  60.         if @step == 1
  61.           move
  62.         end  
  63.       end
  64.     end   
  65.    
  66.     def score_refresh
  67.       @score.bitmap.clear
  68.       @score.bitmap.draw_text(0, 20,200,20,$FENSHU_WORM.to_s,2 )
  69.     end

  70.     def draw_line(x,y) #描绘边缘
  71.       k = []
  72.       for i in 0..3
  73.          k.push(Sprite.new)
  74.       end
  75.       k[0].bitmap = Bitmap.new(380,10) #上
  76.       k[1].bitmap = Bitmap.new(380,10) #下
  77.       k[2].bitmap = Bitmap.new(10,400) #左
  78.       k[3].bitmap = Bitmap.new(10,400) #右
  79.       for kk in k
  80.          rect = kk.bitmap.rect
  81.          color = Color.new(205,205,205)
  82.          kk.bitmap.fill_rect(rect, color)
  83.       end
  84.       k[0].x = x*20 + 20
  85.       k[0].y = y*20 + 10
  86.       k[1].x = x*20 + 20
  87.       k[1].y = y*20 + 400
  88.       k[2].x = x*20 + 10
  89.       k[2].y = y*20 + 10
  90.       k[3].x = x*20 + 400
  91.       k[3].y = y*20 + 10
  92.     end
  93.       
  94.     def draw(x,y) #描绘形状
  95.       a = Sprite.new
  96.       a.bitmap = Bitmap.new(20,20)
  97.       rect = a.bitmap.rect
  98.       color = Color.new(255,255,255)
  99.       a.bitmap.fill_rect(rect, color)
  100.       a.x = x*20
  101.       a.y = y*20
  102.     end

  103.     def dis_worm(x,y)
  104.       b = @worm[[x,y]]
  105.       b.bitmap.clear
  106.       b.dispose
  107.       @worm.delete([x,y])
  108.       @world.push([x,y])
  109.     end

  110.     def dis_food
  111.       b = @food[1]
  112.       b.bitmap.clear
  113.       b.dispose
  114.       draw_food
  115.     end
  116.    
  117.     def move
  118.       case @key
  119.       when 6
  120.       @head = [@balls[0][0]+1,@balls[0][1]]
  121.       when 2
  122.       @head = [@balls[0][0],@balls[0][1]+1]
  123.       when 4
  124.       @head = [@balls[0][0]-1,@balls[0][1]]
  125.       when 8
  126.       @head = [@balls[0][0],@balls[0][1]-1]
  127.       end
  128.       if @head == @food[0] #吃到食物
  129.         $FENSHU_WORM+=9
  130.         score_refresh
  131.         draw_worm(@head[0],@head[1])
  132.         dis_food
  133.       elsif @balls.include?(@head) == true #碰到自己身体
  134.        finish                             
  135.       elsif @head[0]<0 or @head[0]>@size or @head[1]<0 or @head[1]>@size #碰到边缘
  136.        finish                           
  137.       else
  138.         draw_worm(@head[0],@head[1])
  139.         @tail = @balls.pop
  140.         dis_worm(@tail[0],@tail[1])
  141.       end
  142.        wait(@speed)
  143.     end
  144.    
  145.     def wait(n)
  146.         for i in 0..n
  147.            Graphics.update if i > n/2
  148.         end
  149.     end
  150.       
  151.     def update
  152.         if Input.trigger?(Input::C)
  153.           @step = 1
  154.         end
  155.         if Input.trigger?(Input::RIGHT)
  156.           if @key == 4
  157.             @key = 4
  158.           else
  159.             @key = 6
  160.           end
  161.         end
  162.         if Input.trigger?(Input::LEFT)
  163.           if @key == 6
  164.             @key = 6
  165.           else
  166.             @key = 4
  167.           end
  168.         end
  169.         if Input.trigger?(Input::DOWN)
  170.           if @key == 8
  171.             @key = 8
  172.           else  
  173.             @key = 2
  174.           end
  175.         end
  176.         if Input.trigger?(Input::UP)
  177.           if @key == 2
  178.             @key = 2
  179.           else
  180.             @key = 8
  181.           end
  182.         end
  183.     end

  184.     def draw_worm(x,y) #描绘虫
  185.       a = Sprite.new
  186.       a.bitmap = Bitmap.new(20,20)
  187.       rect = a.bitmap.rect
  188.       color = Color.new(255,255,255)
  189.       color2 = Color.new(155,155,155)
  190.       a.bitmap.fill_rect(rect, color)
  191.       a.bitmap.fill_rect(0,0,20,2,color2)
  192.       a.bitmap.fill_rect(0,18,20,2,color2)
  193.       a.bitmap.fill_rect(0,0,2,20,color2)
  194.       a.bitmap.fill_rect(18,0,2,20,color2)
  195.       a.x = x*20 + @ox
  196.       a.y = y*20 + @oy
  197.       @worm[[x,y]] = a
  198.       @balls.unshift([x,y])
  199.       @world.delete([x,y])
  200.     end
  201.    
  202.     def draw_food #描绘食物
  203.       if @world.size == 0
  204.         finish
  205.       end
  206.         b = @world[rand(@world.size-1)]
  207.         a = Sprite.new
  208.         a.bitmap = Bitmap.new(20,20)
  209.         rect = a.bitmap.rect
  210.         color = Color.new(255,255,255)
  211.         color2 = Color.new(155,155,155)
  212.         a.bitmap.fill_rect(rect, color)
  213.         a.bitmap.fill_rect(0,0,20,2,color2)
  214.         a.bitmap.fill_rect(0,18,20,2,color2)
  215.         a.bitmap.fill_rect(0,0,2,20,color2)
  216.         a.bitmap.fill_rect(18,0,2,20,color2)
  217.         a.x = b[0]*20 + @ox
  218.         a.y = b[1]*20 + @oy
  219.         @food = [b,a]
  220.     end

  221.     def finish
  222.       @score2.dispose
  223.       @score.dispose
  224.       a = "您最后的得分是"
  225.       b = $FENSHU_WORM.to_s
  226.       c = "分"
  227.       p a+b+c
  228.       exit #如果不想游戏结束就退出请把这句##掉
  229.     end
  230. end
  231.   
  232. #===========================
  233. begin
  234.      Font.default_name = (["黑体","宋体"])
  235.      a = Tanchishe.new
  236.      a.main
  237. end
复制代码
哎呀,蛋疼什么的最有爱了

Lv1.梦旅人

梦石
0
星屑
50
在线时间
63 小时
注册时间
2010-7-18
帖子
202
9
发表于 2010-7-21 06:40:24 | 只看该作者
用Delphi11 5分钟就写得出来了,但是用rm附带的脚本来写已经算不错了。
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

8
 楼主| 发表于 2007-12-18 05:16:47 | 只看该作者
向雷子要密码
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

心无天使

梦石
0
星屑
49
在线时间
0 小时
注册时间
2007-12-15
帖子
1016
7
发表于 2007-12-18 04:43:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

6
 楼主| 发表于 2007-12-18 03:56:46 | 只看该作者
发布完毕
VIP+3
http://rpg.blue/web/shownews.asp?id=887
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
238 小时
注册时间
2006-10-2
帖子
417
5
发表于 2007-12-16 06:50:03 | 只看该作者
{/qiang}谢谢了
系统信息:本贴由本区版主认可,66RPG感谢您的热情解答~
山寨产品龟速制作中……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
77 小时
注册时间
2007-1-6
帖子
304

短篇八橙光组季军

4
发表于 2007-12-16 06:43:15 | 只看该作者
我们的目标是不仅要恢复,还要利用恢复之机顺手升级(看天)
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

心无天使

梦石
0
星屑
49
在线时间
0 小时
注册时间
2007-12-15
帖子
1016
3
发表于 2007-12-16 06:37:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

2
 楼主| 发表于 2007-12-16 06:21:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
作者:猫哥哥


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

   RP爆发!
今天晚上想试写一下贪吃蛇,没想到很容易就写出来了……不知道有没有bug,欢迎大家debug
预览图一张:


#==============================================================================
#
#   ●贪吃蛇v1.0
#                 by 猫哥哥
#                                                       [email protected]
#==============================================================================
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]<0 or @head[0]>@size or @head[1]<0 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 #如果不想游戏结束就退出请把这句##掉
    end
end
  
#===========================
begin
     Font.default_name = (["黑体","宋体"])
     a = Tanchishe.new
     a.main
end

哎呀,蛋疼什么的最有爱了
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 18:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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