资源简介

本用Kinect姿势控制俄罗斯方块,游戏功能均实现,玩一下就知道了^_^ 资源包含源代码、可执行程序,项目。 本资源与Blog《Kinect开发之体感举起手来程序设计(Kinect俄罗斯方块)》配套。 如果您下载到了本资源。请去blog上看原文,方便一起学习交流。 游戏需要Kinect SDK的支持,请先安装Kinect SDK 本资源对应博文地址为: http://yacare.iteye.com/blog/1950133

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Kinect_TetrisV2
{
    public class Block
    {
        public Block()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        /// 
        /// 构造方法
        /// 

        /// 
        /// 
        public Block(int index Point pt)
        {
            colorIndex = index;
            ptPosition = pt;
        }
        public Block(int index int x int y)
        {
            colorIndex = index;
            ptPosition.X = x;
            ptPosition.Y = y;
        }
        // 颜色序号
        private int colorIndex;
        // 位置
        private Point ptPosition;

        // 方块大小
        private static int size = 30;
        private static int COLOR_CHANGE = 60;

        //System.Drawing.Color表示ARGB颜色从指定的8位颜色值(红色,绿色,蓝色)中创建结构
        //制定的默认alpha 默认为255 意为完全不透明
        private static Color[] clrDefine
            = new Color[] {
Color.FromArgb(51 204 102) // 绿 Default color or extend block color
Color.FromArgb(200 200 102) // 黄
Color.FromArgb(0 143 224) // 蓝
Color.FromArgb(153 153 204) // 青
Color.FromArgb(204 204 204) // 灰
Color.FromArgb(232 123  20) // 橙
Color.FromArgb(220  39  75)   // 红 sample block color
}; // 颜色

        public int ColorIndex
        {
            get
            {
                return colorIndex;
            }
            set
            {
                colorIndex = value;
            }
        }

        /// 
        /// 位置的set和get方法
        /// 

        public Point Position
        {
            get
            {
                return ptPosition;
            }
            set
            {
                ptPosition = value;
            }
        }

        /// 
        /// 验证是否要绘图 如果clear为真 则要清除产生的块 因为方块产生了 
        /// 并且移动 必须把移动前一秒的块描成白色 
        /// 

        /// 
        /// 
        /// 
        public void Draw(Graphics g Point ptStart bool clear)
        {
            if (clear)
            {
                g.FillRectangle(new SolidBrush(Color.White) ptStart.X + (ptPosition.X * size)
                    ptStart.Y + (ptPosition.Y * size) size size);
            }
            else
            {
                g.FillRectangle(new SolidBrush(clrDefine[colorIndex]) ptStart.X + (ptPosition.X * size) ptStart.Y + (ptPosition.Y * size) size size);
                //绘制四条边 两条亮色的边 两条暗色的边 使块的形状更加突出
                g.DrawLine(new Pen(GetLightColor(colorIndex) 1) ptStart.X + (ptPosition.X * size) ptStart.Y + (ptPosition.Y * size) ptStart.X + (ptPosition.X * size) + size - 1 ptStart.Y + (ptPosition.Y * size));
   

评论

共有 条评论