别踩白块的两种模式
来源:互联网 发布:牛贝微信淘宝客安装 编辑:程序博客网 时间:2024/05/13 09:08
本节主要讲解别踩白块,游戏采用的方法较为简单,主要学习C#中如何创建动态数组,来存放相应的空间,游戏分为两个模式,模式一通过点击来实现移动,模式二(也就是常见的模式)方块移动,手动点击,并且方块速度会加快,代码如下:
编辑器界面
<Window x:Class="别猜百块1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="800" Width="600" WindowStyle="None" Background="Pink" AllowsTransparency="False" Loaded="Window_Loaded" Left="400" Top="0"> <Canvas Name="back" Margin="0,0,200,0" Height="800" Width="400" > <Button Content="模式一" Canvas.Left="469" Canvas.Top="130" Width="75" Click="Button_Click"/> <Button Content="结束游戏" Canvas.Left="469" Canvas.Top="324" Width="75" Click="Button_Click_1"/> <Button Content="模式二" Canvas.Left="469" Canvas.Top="230" Width="75" Click="Button_Click_2"/> <Label Content="总分:" Canvas.Left="469" Canvas.Top="499" Width="40" Height="30" Background="Bisque" HorizontalContentAlignment="Center" Tag="plus"/> <Label Content="0" Canvas.Left="504" Canvas.Top="499" Background="Aquamarine" Width="50" Height="30" Name="g" Tag="plus"/> </Canvas></Window>
主体代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using System.Windows.Threading;namespace 别猜百块1{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } DispatcherTimer t1 = new DispatcherTimer(); Random r = new Random(); List<Label> list = new List<Label>(); List<Label> list1 = new List<Label>(); Image pic = new Image(); int speed=2; int total=0; int k = 0; //欢迎界面 private void Window_Loaded(object sender, RoutedEventArgs e) { t1.Tick += t1_Tick; t1.Interval = TimeSpan.FromMilliseconds(10); pic.Source = new BitmapImage(new Uri("images/582b47eaa0142442528b1e4e7e1ff2c1_u=1095098125,3201950109&fm=21&gp=0.jpg", UriKind.Relative)); pic.Stretch = Stretch.Fill; back.Children.Add(pic); pic.Height = back.Height; pic.Width = back.Width; Canvas.SetLeft(pic,0); Canvas.SetTop(pic,0); } //模式一 private void Button_Click(object sender, RoutedEventArgs e) { //通过k来防止连续按同一个按钮而造成的错误,因为数组是全局的,不可能实例化两次 if(k==1) { return; } else if(k==2||k==0) { total = 0; g.Content = total.ToString(); for (int i = k*10-1; i >= 0;i-- ) { t1.Stop(); back.Children.Remove(list1[i]); list1.Remove(list1[i]); } k = 1; for (int i = 0; i < 20; i++) { Label body = new Label(); body.Width = 100; body.Height = 200; list.Add(body); list[i].Tag = i; list[i].BorderBrush = Brushes.DarkOrange; list[i].BorderThickness = new Thickness(1); back.Children.Add(list[i]); Canvas.SetLeft(list[i], (i % 4) * body.Width); Canvas.SetTop(list[i], (i / 4 - 1) * body.Height); } for (int i = 0; i < 5; i++) { list[r.Next(0, 4) + i * 4].Background = Brushes.Black; } for (int i = 0; i < 20; i++) { //点击事件 list[i].MouseLeftButtonDown += MainWindow_MouseLeftButtonDown; if (list[i].Background != Brushes.Black) { list[i].Background = Brushes.White; } } } } //模式一点击 void MainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Label body = sender as Label; if (body.Background == Brushes.Black && (int)body.Tag > 15) { total++; g.Content = total.ToString(); //点击之后更换颜色,并且向下移动 for (int i = 19; i > 3; i--) { list[i].Background = list[i - 4].Background; } for (int i = 0; i < 4; i++) { list[i].Background = Brushes.White; } list[r.Next(0, 4)].Background = Brushes.Black; for (int i = 0; i < 4; i++) { if (list[i].Background != Brushes.Black) { list[i].Background = Brushes.White; } } } } //模式二 private void Button_Click_2(object sender, RoutedEventArgs e) { if(k==1||k==0) { total = 0; g.Content = total.ToString(); for (int i = k*20-1; i >= 0; i--) { back.Children.Remove(list[i]); list.Remove(list[i]); } k = 2; for (int i = 0; i < 20; i++) { Label body = new Label(); body.Width = 100; body.Height = 200; list1.Add(body); list1[i].BorderBrush = Brushes.DarkOrange; list1[i].BorderThickness = new Thickness(1); back.Children.Add(list1[i]); Canvas.SetLeft(list1[i], (i % 4) * body.Width); Canvas.SetTop(list1[i], (i / 4 - 1) * body.Height); } for (int i = 0; i < 5; i++) { list1[r.Next(0, 4) + i * 4].Background = Brushes.Black; } for (int i = 0; i < 20; i++) { list1[i].MouseLeftButtonDown += MainWindow1_MouseLeftButtonDown; if (list1[i].Background != Brushes.Black) { list1[i].Background = Brushes.White; } if (i > 15) { list1[i].Tag = "black"; } else list1[i].Tag = "else"; } t1.Start(); } else if(k==2) { return ; } } //模式二点击 void MainWindow1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Label body = sender as Label; if(body.Background==Brushes.Black&&body.Tag.ToString()=="black") { //计分 total++; g.Content = total.ToString(); if (total%10 == 0) { speed += 2; } for (int i = 0; i < 20;i++ ) { if(list1[i]==body) { for (int j = (i / 4) * 4; j < (i / 4 + 1) * 4;j++ ) { list1[j].Tag = "else"; list1[j].Background = Brushes.White; } list1[i].Background = Brushes.ForestGreen; if(i>3) { for (int j = (i / 4-1) * 4; j < (i / 4) * 4; j++) { list1[j].Tag = "black"; } } else for(int j=16;j<20;j++) { list1[j].Tag = "black"; } } } } } //模式二移动 void t1_Tick(object sender, EventArgs e) { for (int i = 19; i >= 0; i--) { if (Canvas.GetTop(list1[i]) >= 800) { for (int j = i - 3; j <= i;j++ ) { if(list1[j].Background==Brushes.Black) { for (int k = (i / 4) * 4; k < (i / 4 + 1) * 4; k++) { list1[k].Tag = "else"; list1[k].Background = Brushes.White; } if (i > 3) { for (int k = (i / 4 - 1) * 4; k < (i / 4) * 4; k++) { list1[k].Tag = "black"; } } else for (int k = 16; k < 20; k++) { list1[k].Tag = "black"; } } } for (int j = i - 3; j <= i; j++) { list1[j].Background = Brushes.White; Canvas.SetTop(list1[j], -list1[j].Height); } list1[r.Next(0, 4) + (i / 4) * 4].Background = Brushes.Black; for (int j = i - 3; j <= i;j++ ) { if(list1[i].Background!=Brushes.Black) { list1[i].Background=Brushes.White; } } } Canvas.SetTop(list1[i], Canvas.GetTop(list1[i]) + speed); } } //结束 private void Button_Click_1(object sender, RoutedEventArgs e) { this.Close(); } }}
本节主要讲解C#中动态数组的使用方法
0 0
- 别踩白块的两种模式
- Singleton的两种模式
- RA的两种模式
- epoll的两种模式
- Singleton模式的两种实现模式
- 短信的两种模式(转载)
- FTP的两种连接模式!
- 数据访问两种模式的比较
- 复杂任务的两种批处理模式
- CoR 模式的两种形式
- apache的两种工作模式讲解
- apache的两种工作模式讲解
- MSIL的两种编译模式
- ftp的两种工作模式
- java常见的两种Singleton模式
- FTP的两种工作模式
- 简述MySQL的两种模式
- FTP的两种不同工作模式
- Mathf类
- Android工具类--App相关的辅助类
- 图之关节点和重连通分量
- 如何用ps制作GIF动图
- leetcode贪心之gas-station条件决定答案
- 别踩白块的两种模式
- 【opencv练习13 - File 输入输出】
- 哈希的存取为何快?
- Weex入门与进阶指南
- arm 知识
- 组合数/Lucas定理
- 水仙花数
- 给Android程序员的一些面试建议
- Android工具类--常用单位转换类