计设大赛作品分享

 参加计算机设计大赛团队做了两个月的游戏,拿到了国三的好成绩,下面是项目分享。

目录

一、游戏流程图

场景编号:​

二、分块剖析

1、封面设计-场景①

(1)思路:

(2)技术:

(3)代码:

跳转到下一场景和角色移动脚本:

2、登录与注册-②③场景

(1)思路:

(2)技术:

 (3)代码

Login脚本: 

Exit脚本:

GameUI脚本:

 Gradualchage脚本:

 LoginJudge脚本:

Register脚本:

 RJudge脚本:

Confirm 脚本: 

Return 脚本: 

 3、主菜单-场景④

(1)思路

(2)技术

(3)代码

ReturnLogin脚本:

zhucaidan_kaishi 脚本:

zhucaidan_openguanyu 脚本:

zhucaidan_tuichu 脚本:

4、剧情漫画-场景⑤

(1)思路

(2)技术

(3)代码

        donghua_jindu 脚本:

5、游戏地图-场景⑥⑦

(1)思路

(2)技术

(3)代码

play_zhuliguan 脚本:

积分排行脚本:

6、游戏玩法1-(场景⑧~⑫)

(1)思路

(2)技术

(3)代码

玩法设计脚本:

7、游戏玩法2-(场景⑬~⑲)

(1)思路

(2)技术

(3)代码

         玩法脚本设计:


一、游戏流程图

游戏的是由一个个游戏场景组成的,各个场景之间有都接口相连。

计设大赛作品分享_第1张图片

场景编号:

计设大赛作品分享_第2张图片

二、分块剖析

1、封面设计-场景①

(1)思路:

游戏角色从右下角向左边乘船驶出,到达最左侧直到身影消失后,显示游戏封面《诗梦游记》。

 计设大赛作品分享_第3张图片

计设大赛作品分享_第4张图片

(2)技术:

①背景由美工制作。

②字体采用制作的字体图片完成。

③动画由unity动画器制作完成。

④跳转到下一场景和角色移动由代码完成。

(3)代码:

跳转到下一场景和角色移动脚本:

using UnityEngine;
using UnityEngine.SceneManagement;

public class fengmian_jindutiao : MonoBehaviour
{

    public float speed;

    public GameObject gameobject;

    void Update()
    {
        transform.Translate(speed * Time.deltaTime, 0, 0);
        if (Input.GetKeyDown(KeyCode.Escape) /*|| Input.GetKeyDown(KeyCode.Home)*/)
        {
            SceneManager.LoadScene("Login");//build index
        }
    }


    void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("下一个场景:登录界面");
        //切换下一个场景
        SceneManager.LoadScene("Login");//build index
    }

}

2、登录与注册-②③场景

(1)思路:

玩家通过注册功能注册游戏账号,返回登录界面进行登录。玩家的账号信息及密码都由服务器数据库保存,如果注册完成,直接登录即可,如果没有注册则无法登录。

(2)技术:

①UI设计

②数据库连接

③登录功能(代码)

计设大赛作品分享_第5张图片

④注册功能(代码)

计设大赛作品分享_第6张图片

 (3)代码

登录代码:

计设大赛作品分享_第7张图片

Login脚本: 

using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class Login : MonoBehaviour
{
    public InputField i1, i2;
    private bool show = true;
    public Text RUname;//获取用户名
    public string reName;

    public void toLogin(string s1,string s2)
    {
        //建立连接语句
        //charset=utf8这句要写,不然可能会报错                                 
        string constr = "server=服务器公网网址;port=端口;User Id=用户名;password=密码;Database=数据库;charset=utf8";

        //建立连接
        MySqlConnection mycon = new MySqlConnection(constr);
        //打开连接
        mycon.Open();

        //插入数据
        /*MySqlCommand mycmd = new MySqlCommand("insert into user(username,pw) values ('" + s1 + "','" + s2 + "')", mycon);
        if (mycmd.ExecuteNonQuery() > 0)
        {
            print("Insert success!");
        }*/

        //查询数据
        string selstr = "select * from peotry";
        MySqlCommand cmd = new MySqlCommand(selstr, mycon);

        MySqlDataReader reader = cmd.ExecuteReader();
      
        /*try
        {*/
        
            while (reader.Read())
            {
                if(reader[0].ToString() == s1 && reader[1].ToString() == s2)
                {
                    Debug.Log("登陆成功进入:主菜单");
                    i1.text = "";
                    i2.text = "";
                    show = false;

                    //获取当前用户名
                    RUname.text = s1;

                    reName = s1;
                    //  保存用户名数据
                    PlayerPrefs.SetString("reName", reName);

                    //登录成功切换场景                    
                    SceneManager.LoadScene("主菜单");//build index
                    break;
                }
            }
            if (show)
            {
                   GameObject.Find("游戏主控").GetComponent().error();
                    i1.text = "";
                    i2.text = "";
            }
            
        //}
        //关闭连接
        mycon.Close();
    }
}

Exit脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Exit : MonoBehaviour
{
    // Start is called before the first frame update
    public void OnStartGame()
    {
        SceneManager.LoadScene(1);
    }
    public void OnExitGame()
    {
#if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
#else
        Application.Quit();
#endif
    }
}

GameUI脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameUI : MonoBehaviour
{

    public Image image1;
    public Image image2;
    // Start is called before the first frame update
    void Start()
    {
        image1.transform.position = new Vector3(1000, 1000, 0);
        image2.transform.position = new Vector3(1000, 1000, 0);
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void onExit()
    {
        image1.transform.position = new Vector3(0, 0, 0);
        GameObject.Find("退出按钮").GetComponent

 Gradualchage脚本:

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

public class Gradualchange : MonoBehaviour
{
    public Image image;
    public float showTime = 2.50f;//规定的显示时间
    public float ShowTimeTrigger = 0;//显示的实时时间
    public float fadeTime = 2;//规定的消失时间
    public float fadeTimeTrigger = 0;//消失的实时时间
    private bool show = true;
    private bool turn = true;


    // Update is called once per frame
    void Update()
    {
        if (turn)
        {
            ShowTimeTrigger += Time.deltaTime;
            if (ShowTimeTrigger > showTime)
            {
                if (fadeTimeTrigger >= 0 && fadeTimeTrigger < fadeTime)
                {
                    fadeTimeTrigger += Time.deltaTime;
                    if (show)
                    {
                        image.color = new Color(1, 1, 1, 1 - (fadeTimeTrigger / fadeTime));
                    }
                    else
                    {
                        image.color = new Color(1, 1, 1, (fadeTimeTrigger / fadeTime));
                    }
                }
                else
                {
                    SceneManager.LoadScene("Login");
                    turn = false;
                }
            }
        }
    }
}

 LoginJudge脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class LoginJudge : MonoBehaviour
{
    public InputField i1,i2;
    private string s1, s2;
    private int count = 0;
    private bool show = true;
    // Start is called before the first frame update


    public void Jugde()
    {
        show = true;
        s1 = i1.text;
        s2 = i2.text;
        for(int i = 0;i < s2.Length; i++)
        {
            count++;
        }
        if(count < 6)
        {
            GameObject.Find("游戏主控").GetComponent().error();
            i1.text = "";
            i2.text = "";
            show = false;
        }
        count = 0;
        if (show)
        {
            GameObject.Find("游戏主控").GetComponent().toLogin(s1, s2);
        }
    }
}

Register脚本:

using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class Register : MonoBehaviour
{
    
    public void change()
    {
        SceneManager.LoadScene("Register");
    }

}

注册代码:

计设大赛作品分享_第8张图片

 RJudge脚本:

using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.UI;

public class RJudge : MonoBehaviour
{
    public InputField i1, i2, i3;
    public Image m1, m2, m3, m4;
    private string s1, s2, s3,sco;
    private bool show = true;
    private int score = 0;
    // Start is called before the first frame update
    void Start()
    {
        m1.transform.position = new Vector3(1000, 1000, 0);
        m2.transform.position = new Vector3(1000, 1000, 0);
        m3.transform.position = new Vector3(1000, 1000, 0);
        m4.transform.position = new Vector3(1000, 1000, 0);
    }

    public void registerjudge()
    {
        show = true;
        s1 = i1.text;
        s2 = i2.text;
        s3 = i3.text;
        sco = score.ToString();

        if(s1 == "")
        {
            GameObject.Find("注册按钮").GetComponent

Confirm 脚本: 

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

public class Confirm : MonoBehaviour
{
    public InputField i1, i2, i3;
    public Image m1, m2, m3, m4;

    public void confirm1()
    {
        GameObject.Find("注册按钮").GetComponent

Return 脚本: 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Return : MonoBehaviour
{
    public void returnLogin()
    {
        SceneManager.LoadScene("Login");
    }
}

 3、主菜单-场景④

(1)思路

        实现四个按钮:一是左上角的返回登录按钮,二是游戏开始按钮,三是游戏关于按钮,四是游戏退出按钮。

(2)技术

       ① UI设计

       ②按钮功能代码

计设大赛作品分享_第9张图片

(3)代码

返回登录界面:

ReturnLogin脚本:

using UnityEngine;
using UnityEngine.SceneManagement;

public class zhucaidan_fanhuidenglu : MonoBehaviour
{
    public void ReturnLogin()
    {
        SceneManager.LoadScene("Login");//build index
    }
}

 开始按钮:

zhucaidan_kaishi 脚本:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class zhucaidan_kaishi : MonoBehaviour
{
    public void Kaishi()
    {
        Debug.Log("进入场景:漫画");
        SceneManager.LoadScene("manhua");//build index
    }
}

 关于按钮:

zhucaidan_openguanyu 脚本:

using UnityEngine;
using UnityEngine.UI;

public class zhucaidan_openguanyu : MonoBehaviour
{
    public GameObject guyuPanel;

    public void OpenGuanYu()
    {
        guyuPanel.SetActive(true);
    }
}

 退出按钮:

zhucaidan_tuichu 脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class zhucaidan_tuichu : MonoBehaviour
{
    public void OnExitGame()
    {
    #if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
    #else
        Application.Quit();
    #endif
    }
}

4、剧情漫画-场景⑤

(1)思路

        加载场景动画,一共三页,每页的内容由动画器制作,页面间的跳转由代码控制。

(2)技术

        ①漫画制作

        ②控制脚本

计设大赛作品分享_第10张图片

(3)代码

        控制漫画进度代码:

        donghua_jindu 脚本:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class donghua_jindu : MonoBehaviour
{
    public GameObject panel_1;

    public GameObject panel_2;

    public GameObject panel_3;

    public GameObject page1;

    public GameObject page2;

    public GameObject page3;

    public float speed;

    void Update()
    {
       transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
        if (Input.GetKeyDown(KeyCode.Escape) /*|| Input.GetKeyDown(KeyCode.Home)*/)
        {
            //加载场景
            SceneManager.LoadScene("诗梦秘境");//build index
        }
    }
    
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "page_1")
        {
            panel_1.SetActive(false);
            panel_2.SetActive(true);
        }
        else if (other.tag == "page_2")
        {
            panel_2.SetActive(false);
            panel_3.SetActive(true);
        }
        else if (other.tag == "page_3")
        {
            panel_3.SetActive(true);
            //加载场景
            SceneManager.LoadScene("诗梦秘境");//build index
            transform.position = new Vector3(-10, -8, 0);
        }
    }
 
}

5、游戏地图-场景⑥⑦

(1)思路

        实现关卡的进入与地图的转换还有积分排行功能。

(2)技术

        ①美工设计

        ②功能实现

计设大赛作品分享_第11张图片

 计设大赛作品分享_第12张图片

(3)代码

进入游戏代码:

play_zhuliguan 脚本:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class play_zhuliguan : MonoBehaviour
{
    public void Play_ZLG()
    {
        Debug.Log("进入游戏:竹里馆");
        SceneManager.LoadScene("竹里馆");//build index

    }
}

积分排行脚本:

using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.UI;

public class paihangbang_duquAndxianshi : MonoBehaviour
{

    public GameObject PaiMing;

    //private List s = new List();

    public Text userName_And_userScore;

    private string texts;

    public void OpenPaiHangbang()
    {
        PaiMing.SetActive(true);
    }

    public void ReadScore()
    {
        string constr = "server=服务器公网网址;port=端口;User Id=用户名;password=密码;Database=数据库;charset=utf8";
         
        //建立连接
        MySqlConnection mycon = new MySqlConnection(constr);

        //打开连接
        mycon.Open();

        //读取数据
        string selstr = "select * from 表";
        MySqlCommand cmd = new MySqlCommand(selstr, mycon);
        MySqlDataReader reader = cmd.ExecuteReader();

        string temp1;
        
        string temp2;

        List s = new List();

        while (reader.Read())
        {
            temp1 = reader[0].ToString();//用户名
            temp2 = reader[2].ToString();//得分
            s.Add(new user(temp1, int.Parse(temp2)));
        }
        s.Sort((x, y) => { return -x.score.CompareTo(y.score); });//升序排序

        texts = " ";

        for (int i = 0; i < s.Count; i++)
        {
            //Debug.Log(s[i].score + " " + s[i].username);//打印用户名及分数
            //userName_And_userScore.text = (s[i].score + " " + s[i].username).ToString();
            //userName_And_userScore.Add((s[i].score + " " + s[i].username).ToString());
            texts += ((i + 1).ToString() + "\t用户名: " + s[i].username + "\t" + " 总得分: " + s[i].score + " 分").ToString();
            texts += '\n';
            texts += '\n';
        }
        userName_And_userScore.text = texts;

        mycon.Close();
    }

    public class user
    {
        public string username;
        public int score;
        public user(string username, int score)
        {
            this.username = username;
            this.score = score;
        }
    }
}

6、游戏玩法1-(场景⑧~⑫)

(1)思路

        第一个关卡地图里都是五言诗,所以玩法是一轮点击五次,若五次能连成一句诗则消除此句,直到将整首诗消除即可通关。

(2)技术

        ①玩法设计

        ②美工设计

计设大赛作品分享_第13张图片

(3)代码

玩法设计脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
//数据库连接
using MySql.Data.MySqlClient;
using System.Data;
//using System;

public class jinagxue_play : MonoBehaviour
{
    //小关排名
    public Text Name_And_Score;

    private string texts;



    //获取当前用户名
    private string recentUsername;//当前用户名


    public GameObject TongguanUI;

    public Sprite[] gameWords;//汉字图片数组
    public List

7、游戏玩法2-(场景⑬~⑲)

(1)思路

          第二个关卡地图里都是七言诗,所以玩法是一轮点击七次,若七次能连成一句诗则消除此句,直到将整首诗消除即可通关。

(2)技术

            ①玩法设计

            ②美工设计

计设大赛作品分享_第14张图片

(3)代码

         玩法脚本设计:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
//数据库连接
using MySql.Data.MySqlClient;
using System.Data;
//using System;

public class chunxue_play : MonoBehaviour
{
    //小关排名
    public Text Name_And_Score;

    private string texts;


    //获取当前用户名
    private string recentUsername;//当前用户名
    public GameObject TongguanUI;

    public Sprite[] gameWords;//汉字图片数组
    public List

总结完毕。

游戏链接:

        链接:https://pan.baidu.com/s/1oT_GgFRgD5em4tY1SfG00A 
        提取码:jc7r 

你可能感兴趣的:(数据库,java,前端)