c# 贪吃蛇源码

using UnityEngine;

using System.Collections;
using System.Diagnostics;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System.Linq;
using UnityEngine.UI;

public class SnakeMove : MonoBehaviour {
    List<Transform> Body = new List<Transform> ();//存放Transform数据类型的数组Body
    public GameObject BodyObject;/    /定义一个游戏物体  蛇
    public GameObject sFood;////  定义一个游戏物体 食物

//updown Y轴 left down是x轴  forward back是z 轴
    Vector3 postion = Vector3.up;       //Vector3.up的简称  Vertor3(0,1,0)
    private bool s = false;
    // Use this for initialization
    public float speed=0.1f;
    public float time = 0;
    //public float time0 =1;
//    public float xlimit = 25.5f;
//    public float ylimit = 25.5f;
    public int xlimit = 25;
    public int ylimit = 25;

//伤害数值
    public int Value;
    //目标位置
    private Vector3 mTarget;
    //屏幕坐标
    private Vector3 mScreen;
    //文本宽度
    public float ContentWidth = 100;
    //文本高度
    public float ContentHeight = 50;
    //GUI坐标
    private Vector2 mPoint;
    //炫酷的字体
    GUIStyle frontStyle = new GUIStyle();

public Text text;
    Vector3 VPostion;

public GameObject body1;
    public ArrayList list = new ArrayList();
    private bool isEated = false;
    void Start () {
        
        //Time.timeScale=1;
        //time = Time.time + time;
        //InvokeRepeating 从第一秒开始,每隔四秒调用一次
        InvokeRepeating ("Food", 1, 4);1秒后 调用Food  之后每4秒调用一次
        InvokeRepeating ("Move", speed, speed);

//获取目标位置
        mTarget =transform.position;
        //获取屏幕坐标
        mScreen =Camera.main.WorldToScreenPoint(mTarget);
        //将屏幕坐标转化为GUI坐标
        mPoint = new Vector2(mScreen.x,Screen.height-mScreen.y);
        //
        Value =0;
    }
    
    // Update is called once per frame
    void Update () {

if(Input.GetMouseButtonDown(0))
            Time.timeScale=1;
        if (Input.GetKeyDown//(获取键按下) (KeyCode.D)&&postion!=Vector3.left)

{
            postion = Vector3.right;
        }
        if (Input.GetKeyDown (KeyCode.A)&&postion!=Vector3.right) 
        {
            postion = Vector3.left;
        }
        if (Input.GetKeyDown (KeyCode.S)&&postion!=Vector3.up) 
        {
            postion = Vector3.down;
        }
        if (Input.GetKeyDown (KeyCode.W)&&postion!=Vector3.down) 
        {
            postion = Vector3.up;
        }
        //Time.tiem 系统时间
//        if (time<=Time.time) 
//        {
//            transform.Translate (postion);
//            time += 1;
//            //time 越小 速度越快
//        }

//Random r = new Random ();
        //OnTriggerEnter();
    
    }
    void Move()
    {
        //transform.Translate (postion);

VPostion = transform.position;
        transform.Translate (postion); //Transform.Translate平移 向某方向移动物体多少距离
        if (isEated) 
        {
            GameObject g = (GameObject)Instantiate(body1,VPostion,Quaternion.identity);
            g.GetComponent<MeshRenderer> ().material.color = new Color (Random.Range (0, 1.0f), Random.Range (0, 1.0f), Random.Range (0, 1.0f));
            list.Insert (0, g);//将一个项插入指定索引处的 IList<(Of <(T>)>)。 
                                         //将元素插入 ArrayList 的指定索引处。 可在任意位置插入。
            isEated = false;
        }
        else if (list.Count>0)
        {
            //            //最后一个元素的位置赋值给新的位置
            //            //最后一个元素插入在第一个元素地址
            //            //删除最后一个元素
            ((GameObject)list[list.Count-1]).transform.position = VPostion;
            list.Insert (0, list [list.Count - 1]);//在0的位置插入一个
            list.RemoveAt (list.Count-1);//移除 ArrayList 的指定索引处的元素。
        }
    }
    void Food()
    {
        System.Random r = new System.Random ();
        float x = r.Next (-xlimit,xlimit);
        float y = r.Next (-ylimit,ylimit);

//        float x = Random.Range(-xlimit,xlimit);
//        float y = Random.Range (-ylimit, ylimit);
        Instantiate (sFood, new Vector2 (x, y), Quaternion.identity);
    }
    void OnTriggerEnter(Collider other)
    {
   
        if (other.gameObject.CompareTag ("Food")) 
        {
            if(!isEated)
                Value++;
            isEated = true;
            Destroy (other.gameObject);
        }
        else 
        {

Time.timeScale=0;

SceneManager.LoadScene (0);
        }
        text.text = "Score :" + Value;
    }
    void OnGUI()
    {
        //保证目标在摄像机前方
        if (mScreen.z > 0) 
        {
            //GUI.color = Color.blue;
            //内部使用GUI坐标进行绘制
            frontStyle.fontSize=40;
            frontStyle.normal.background = null;//设置背景填充
            frontStyle.normal.textColor = new Color (100, 0, 128);//设置字体颜色
            GUI.Label(new Rect(30,0,ContentWidth,ContentHeight),"分数为"+Value.ToString(),frontStyle);
            //                  mPoint.x,mPoint.y
        }
    }
}

时间: 2024-12-07 08:51:16

c# 贪吃蛇源码的相关文章

js贪吃蛇源码

1.注意,自己引入jquery,这个demo基于jquery的,我的jquery是写的本地的 2.没有写注释,看不懂的再问我吧, <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> * { padding: 0; margin: 0; } div.w

C语言实现贪吃蛇源码

先放效果 源代码 //2016-2-12 //zhaoyu //Gmail:[email protected] //Language: C //Platform:Code::Blocks #include <stdio.h> #include <windows.h> #include <stdlib.h> #include <time.h> typedef struct snake { int x; int y; struct snake *next; }S

python小游戏贪吃蛇源码下载

回车键:开始游戏,空格键:暂停 / 继续,方向键 或 WSAD 键:控制移动方向 下载地址 原文地址:https://www.cnblogs.com/pythongood/p/11173838.html

Android源码50例汇总,欢迎各位下载(转载)

下载中心好资料很多,藏在各个角落,小弟在此帮大家做了一个整理,做了一个下载目录,方便大家选择性下载. 源码实例如下: <Android应用开发揭秘>源代码推荐 http://down.51cto.com/data/102497 Android Phone驱动 http://down.51cto.com/data/246537 安卓(android)编程入门开发教程笔记 http://down.51cto.com/data/172692 Android核心技术与实例详解[源代码]推荐 http:

【141030】VC++贪吃蛇游戏源码(Win32+API)

不错的贪吃蛇游戏,运用了Win32的API.完整源代码,在VS2005下编译通过.内附有编程要点,很好的学习范例. 游戏源码下载地址:点击下载

Ruby for Sketchup 贪吃蛇演示源码(naive_snake)

sketchup是非常简单易用的三维建模软件,可以利用ruby 做二次开发, api文档 http://www.rbc321.cn/api 今天在su中做了一款小游戏 贪吃蛇,说一下步骤 展示 主要思路: 我制作的的玩法是这样的 关于入口文件 # ----------------------------- # # email:[email protected] # # uri: http://www.rbc321.cn # # ------------------------------# #

Python:游戏:贪吃蛇(附源码)

贪吃蛇是个非常简单的游戏,适合练手. 首先分析一下这个游戏 1.蛇怎么画? 蛇是由一个个小方块组成的,那么我们可以用一个 list 记录每一个小方块的坐标,显示的时候将所有小方块画出来即可. 2.蛇怎么移动? 第一反应就是想蚯蚓蠕动一样,每一个方块向前移动一格,但这样做很麻烦,仔细想下,其实除了头尾,蛇的其他部分根本就没有动过,那就简单了,将下一格的坐标添加到 list 开头,并移除 list 的最后一个元素,就相当于蛇向前移动了一格. 3.如何判定游戏结束? 蛇移动超出了游戏区的范围或者碰到了

微信小程序源码下载(200多个)

微信小程序源码下载汇总,点击标题进入对应的微信小程序下载页面. 最新 demo源码(点击标题进入帖子下载) 描述 1 微信小程序 会议室预定小程序 微信小程序 会议室预定小程序**** 本内容被作者隐藏 **** 2 微信小程序-双人五子棋小游戏 微信小程序-双人五子棋小游戏**** 本内容被作者隐藏 **** 3 打卡签到小程序 用微信小程序实现的一个简单的打卡签到的小程序拒绝 4 微信小程序---左滑删除 微信小程序---左滑删除**** 本内容被作者隐藏 **** 5 一个借钱的记事本的微

Java版贪吃蛇(比较完善的版本)

很认真的写的一个java版的贪吃蛇游戏,图形界面,支持菜单操作,键盘监听,可加速,减速,统计得分,设定运动速度,设定游戏背景颜色等!应该没有Bug了,因为全被我修改没了.哈哈. 下面是项目各包及类的层次关系: 游戏的主要运行界面截图如下: 下面是部分代码,详细源码见此链接:http://pan.baidu.com/s/1bnubnzh //Snake类: package com.huowolf.entities; import java.awt.Color; import java.awt.Gr