实例介绍
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// “用户控件”项模板在 http://go.microsoft.com/fwlink/?LinkId=234236 上提供
namespace MoleAttack
{
public sealed partial class GameMain : UserControl
{
List<Hole> holes = new List<Hole>();
TimeSpan passedTime;
DateTime startTime;
DispatcherTimer gameLoop = new DispatcherTimer();
//MouseSound msInjured;
int currentSpeed = 2500;
int CurrentSpeed
{
get
{
return currentSpeed;
}
set
{
currentSpeed = value;
gameLoop.Interval = TimeSpan.FromMilliseconds(currentSpeed);
}
}
int hitMouseCount = 0;
public int HitMouseCount
{
get { return hitMouseCount; }
set
{
hitMouseCount = value;
infomation.tbScore.Text = hitMouseCount.ToString();
MainPage.Instance.updateScore(value);
}
}
public GameMain()
{
// 为初始化变量所必需
InitializeComponent();
Loaded =GameMain_Loaded;
gameOver.Visibility = Visibility.Collapsed;
gameOver.Click = new RoutedEventHandler(gameOver_Click);
gameStart.Click =gameStart_Click;
}
void gameOver_Click(object sender, RoutedEventArgs e)
{
gameOver.Visibility = Visibility.Collapsed;
startTime = DateTime.Now;
HitMouseCount = 0;
CurrentSpeed = 2500;
infomation.tbLevel.Text = "1";
gameLoop.Start();
}
void GameMain_Loaded(object sender, RoutedEventArgs e)
{
gameLoop.Tick = gameLoop_Tick;
gameLoop.Interval = TimeSpan.FromMilliseconds(currentSpeed);
//gameLoop.Start();
foreach (var uie in gridHoles.Children)
{
if (uie is Hole)
{
var oneHole = uie as Hole;
holes.Add(oneHole);
holes.Add(oneHole);
oneHole.mouse.EvInjured = new Action(mouse_EvInjured);
}
}
//msInjured = new MouseSound("ResImg/MoleAttack/Sound/injured.mp3");
}
void gameLoop_Tick(object sender, object e)
{
passedTime = DateTime.Now - startTime;
var passSeconds = passedTime.Minutes * 60 passedTime.Seconds;
if (passSeconds > 15 && passSeconds < 30)
{
infomation.tbLevel.Text = "2";
CurrentSpeed = 2000;
}
if (passSeconds > 30 && passSeconds < 60)
{
infomation.tbLevel.Text = "3";
currentSpeed = 1500;
}
if (passSeconds > 60 && passSeconds < 120)
{
infomation.tbLevel.Text = "4";
currentSpeed = 1000;
}
if (passSeconds > 120 && passSeconds < 240)
{
infomation.tbLevel.Text = "5";
currentSpeed = 500;
}
if (passSeconds > 240)
{
GameOver();
gameLoop.Stop();
}
holes[GetRandomNum(0, holes.Count)].OutHole();
}
public void GameOver()
{
gameOver.Show();
}
void mouse_EvInjured()
{
HitMouseCount ;
//msInjured.Play();
}
/// <summary>
/// 获取一个随机数
/// </summary>
/// <returns>随机数</returns>
public int GetRandomNum(int minNum, int maxNum)
{
//Thread.Sleep(10);
long tick = DateTime.Now.Ticks;
Random r = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
return r.Next(minNum,maxNum);
}
private void gameStart_Click()
{
gameLoop.Start();
startTime = DateTime.Now;
gridHoles.Children.Remove(gameStart);
}
public void Clear()
{
if (!gridHoles.Children.Contains(gameStart))
gridHoles.Children.Add(gameStart);
else
gameStart.Visibility = Visibility.Visible;
gameLoop.Stop();
}
}
}
标签: 游戏
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论