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

Project1

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

[已经过期] 关于贪吃蛇如何更改蛇外观的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
100 小时
注册时间
2010-7-30
帖子
232
跳转到指定楼层
1
发表于 2012-8-20 18:06:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
RUBY 代码复制
  1. #==============================================================================
  2. #
  3. #   ●贪吃蛇v1.0
  4. #                 by 猫哥哥
  5. #                                                       [email][email protected][/email]
  6. #==============================================================================
  7. class Tanchishe
  8.  
  9.   def initialize  
  10.  
  11.      #生成棋盘
  12.      @size = 18
  13.  
  14.      @world = []
  15.      for i in 1..@size
  16.        for j in 1..@size
  17.          @world.push([i,j])
  18.        end
  19.      end
  20.  
  21.     @ox = 60 #原点
  22.     @oy = 40
  23.  
  24.     draw_line((@ox/20)-1 ,(@oy/20)-1)
  25.  
  26.     @worm = {}
  27.     @food = {}
  28.     @balls = []
  29.     @key = 6
  30.     draw_worm(4,8)
  31.     draw_worm(5,8)
  32.     draw_worm(6,8)
  33.     draw_worm(7,8)
  34.     draw_worm(8,8)
  35.     draw_worm(9,8)
  36.     draw_food
  37.  
  38.     @speed = 5 #值越大,速度越慢
  39.  
  40.     $FENSHU_WORM = 0
  41.  
  42.      #分数
  43.       @score2 = Sprite.new
  44.       @score2.bitmap = Bitmap.new(200,20)
  45.       @score2.x = @ox +350
  46.       @score2.y = @oy +330
  47.       @score2.bitmap.draw_text(0, 0,200,20,"得分",1)
  48.       @score = Sprite.new
  49.       @score.bitmap = Bitmap.new(200,40)
  50.       @score.x = @ox +350
  51.       @score.y = @oy +350
  52.       score_refresh #刷新分数
  53.  
  54.       @step = 0
  55.       end
  56.  
  57.     def main
  58.  
  59.       loop do
  60.         Graphics.update
  61.         Input.update
  62.         update
  63.         if @step == 1
  64.           move
  65.         end  
  66.       end
  67.     end   
  68.  
  69.     def score_refresh
  70.       @score.bitmap.clear
  71.       @score.bitmap.draw_text(0, 20,200,20,$FENSHU_WORM.to_s,2 )
  72.     end
  73.  
  74.     def draw_line(x,y) #描绘边缘
  75.       k = []
  76.       for i in 0..3
  77.          k.push(Sprite.new)
  78.       end
  79.       k[0].bitmap = Bitmap.new(380,10) #上
  80.       k[1].bitmap = Bitmap.new(380,10) #下
  81.       k[2].bitmap = Bitmap.new(10,400) #左
  82.       k[3].bitmap = Bitmap.new(10,400) #右
  83.       for kk in k
  84.          rect = kk.bitmap.rect
  85.          color = Color.new(205,205,205)
  86.          kk.bitmap.fill_rect(rect, color)
  87.       end
  88.       k[0].x = x*20 + 20
  89.       k[0].y = y*20 + 10
  90.       k[1].x = x*20 + 20
  91.       k[1].y = y*20 + 400
  92.       k[2].x = x*20 + 10
  93.       k[2].y = y*20 + 10
  94.       k[3].x = x*20 + 400
  95.       k[3].y = y*20 + 10
  96.     end
  97.  
  98.     def draw(x,y) #描绘形状
  99.       a = Sprite.new
  100.       a.bitmap = Bitmap.new(20,20)
  101.       rect = a.bitmap.rect
  102.       color = Color.new(255,255,255)
  103.       a.bitmap.fill_rect(rect, color)
  104.       a.x = x*20
  105.       a.y = y*20
  106.     end
  107.  
  108.     def dis_worm(x,y)
  109.       b = @worm[[x,y]]
  110.       b.bitmap.clear
  111.       b.dispose
  112.       @worm.delete([x,y])
  113.       @world.push([x,y])
  114.     end
  115.  
  116.     def dis_food
  117.       b = @food[1]
  118.       b.bitmap.clear
  119.       b.dispose
  120.       draw_food
  121.     end
  122.  
  123.     def move
  124.       case @key
  125.       when 6
  126.       @head = [@balls[0][0]+1,@balls[0][1]]
  127.       when 2
  128.       @head = [@balls[0][0],@balls[0][1]+1]
  129.       when 4
  130.       @head = [@balls[0][0]-1,@balls[0][1]]
  131.       when 8
  132.       @head = [@balls[0][0],@balls[0][1]-1]
  133.       end
  134.       if @head == @food[0] #吃到食物
  135.         $FENSHU_WORM+=9
  136.         score_refresh
  137.         draw_worm(@head[0],@head[1])
  138.         dis_food
  139.       elsif @balls.include?(@head) == true #碰到自己身体
  140.        finish                             
  141.       elsif @head[0]<0 or @head[0]>@size or @head[1]<0 or @head[1]>@size #碰到边缘
  142.        finish                           
  143.       else
  144.         draw_worm(@head[0],@head[1])
  145.         @tail = @balls.pop
  146.         dis_worm(@tail[0],@tail[1])
  147.       end
  148.        wait(@speed)
  149.     end
  150.  
  151.     def wait(n)
  152.         for i in 0..n
  153.            Graphics.update if i > n/2
  154.         end
  155.     end
  156.  
  157.     def update
  158.         if Input.trigger?(Input::C)
  159.           @step = 1
  160.         end
  161.         if Input.trigger?(Input::RIGHT)
  162.           if @key == 4
  163.             @key = 4
  164.           else
  165.             @key = 6
  166.           end
  167.         end
  168.         if Input.trigger?(Input::LEFT)
  169.           if @key == 6
  170.             @key = 6
  171.           else
  172.             @key = 4
  173.           end
  174.         end
  175.         if Input.trigger?(Input::DOWN)
  176.           if @key == 8
  177.             @key = 8
  178.           else  
  179.             @key = 2
  180.           end
  181.         end
  182.         if Input.trigger?(Input::UP)
  183.           if @key == 2
  184.             @key = 2
  185.           else
  186.             @key = 8
  187.           end
  188.         end
  189.     end
  190.  
  191.     def draw_worm(x,y) #描绘虫
  192.       a = Sprite.new
  193.       a.bitmap = Bitmap.new(20,20)
  194.       rect = a.bitmap.rect
  195.       color = Color.new(255,255,255)
  196.       color2 = Color.new(155,155,155)
  197.       a.bitmap.fill_rect(rect, color)
  198.       a.bitmap.fill_rect(0,0,20,2,color2)
  199.       a.bitmap.fill_rect(0,18,20,2,color2)
  200.       a.bitmap.fill_rect(0,0,2,20,color2)
  201.       a.bitmap.fill_rect(18,0,2,20,color2)
  202.       a.x = x*20 + @ox
  203.       a.y = y*20 + @oy
  204.       @worm[[x,y]] = a
  205.       @balls.unshift([x,y])
  206.       @world.delete([x,y])
  207.     end
  208.  
  209.     def draw_food #描绘食物
  210.       if @world.size == 0
  211.         finish
  212.       end
  213.         b = @world[rand(@world.size-1)]
  214.         a = Sprite.new
  215.         a.bitmap = Bitmap.new(20,20)
  216.         rect = a.bitmap.rect
  217.         color = Color.new(255,255,255)
  218.         color2 = Color.new(155,155,155)
  219.         a.bitmap.fill_rect(rect, color)
  220.         a.bitmap.fill_rect(0,0,20,2,color2)
  221.         a.bitmap.fill_rect(0,18,20,2,color2)
  222.         a.bitmap.fill_rect(0,0,2,20,color2)
  223.         a.bitmap.fill_rect(18,0,2,20,color2)
  224.         a.x = b[0]*20 + @ox
  225.         a.y = b[1]*20 + @oy
  226.         @food = [b,a]
  227.     end
  228.  
  229.     def finish
  230.       @score2.dispose
  231.       @score.dispose
  232.       a = "您最后的得分是"
  233.       b = $FENSHU_WORM.to_s
  234.       c = "分"
  235.       p a+b+c
  236.       exit #如果不想游戏结束就退出请把这句##掉
  237.     end
  238. end
  239.  
  240. #===========================
  241. begin
  242.      Font.default_name = (["黑体","宋体"])
  243.      a = Tanchishe.new
  244.      a.main
  245. end


这个脚本如何更改贪吃蛇外观和被吃东西的外观呢
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-24 03:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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