• 贪吃蛇大作战双人版完整代码,不懂问博主。


    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Text;  
    5. using System.Threading.Tasks;  
    6. using System.Windows;  
    7. using System.Windows.Controls;  
    8. using System.Windows.Data;  
    9. using System.Windows.Documents;  
    10. using System.Windows.Input;  
    11. using System.Windows.Media;  
    12. using System.Windows.Media.Imaging;  
    13. using System.Windows.Navigation;  
    14. using System.Windows.Shapes;  
    15. using System.Windows.Threading;  
    16.   
    17. namespace 贪吃蛇  
    18. {  
    19.     /// <summary>  
    20.     /// MainWindow.xaml 的交互逻辑  
    21.     /// </summary>  
    22.     public partial class MainWindow : Window  
    23.     {  
    24.         public MainWindow()  
    25.         {  
    26.             InitializeComponent();  
    27.             this.Background = Brushes.Pink;  
    28.         }  
    29.         Random ra = new Random();  
    30.         Border food;  
    31.         Border bd1;  
    32.         DispatcherTimer dt;  
    33.         string s = "";  
    34.         string s1 = "";  
    35.         List<Bordersnack = new List<Border>();  
    36.         List<Bordersnakeback = new List<Border>();  
    37.         List<Bordersnack1 = new List<Border>();  
    38.         List<Bordersnakeback1 = new List<Border>();  
    39.         //创建一个放食物的集合  
    40.         List<Borderfoodback = new List<Border>();  
    41.         private void Window_Loaded(object sender, RoutedEventArgs e)  
    42.         {  
    43.             this.Left = 0;  
    44.             this.Top = 0;  
    45.             //this.Width = SystemParameters.FullPrimaryScreenWidth;  
    46.             //this.Height = SystemParameters.FullPrimaryScreenHeight;  
    47.             this.Width = 800;  
    48.             this.Height = 600;  
    49.             for (int i = 0; i 5; i++)  
    50.             {  
    51.                 Border bd = new Border();  
    52.                 if (i == 0)  
    53.                 {  
    54.                     bd.Background = Brushes.Red;  
    55.                 }  
    56.                 else  
    57.                 {  
    58.                     bd.Background = Brushes.Black;  
    59.                 }  
    60.                 bd.Height = bd.Width = 10;  
    61.                 bd.CornerRadius = new CornerRadius(5);  
    62.                 Canvas.SetLeft(bd, 200);  
    63.                 Canvas.SetTop(bd, 200 + i * bd.Height);  
    64.                 back.Children.Add(bd);  
    65.                 snack.Add(bd);  
    66.                 //存储蛇的位置的border  
    67.                 Border bdback = new Border();  
    68.                 Canvas.SetLeft(bdback, 200);  
    69.                 Canvas.SetTop(bdback, 200 + i * bd.Height);  
    70.                 snakeback.Add(bdback);  
    71.             }  
    72.             for (int i = 0; i 5; i++)  
    73.             {  
    74.                 bd1 = new Border();  
    75.                 bd1.Width = bd1.Height = 10;  
    76.                 bd1.CornerRadius = new CornerRadius(5);  
    77.                 if (i == 0)  
    78.                     bd1.Background = Brushes.Chocolate;  
    79.                 else  
    80.                     bd1.Background = Brushes.DarkBlue;  
    81.                 Canvas.SetTop(bd1, 400 + i * bd1.Height);  
    82.                 Canvas.SetLeft(bd1, 400);  
    83.                 back.Children.Add(bd1);  
    84.                 snack1.Add(bd1);  
    85.   
    86.                 //创建蛇的位置border  
    87.                 Border bdback1 = new Border();  
    88.                 bdback1.Height = bdback1.Width = 10;  
    89.                 Canvas.SetTop(bdback1, 400 + i * bd1.Height);  
    90.                 Canvas.SetLeft(bdback1, 400);  
    91.                 snakeback1.Add(bdback1);  
    92.             }  
    93.             this.KeyDown += MainWindow_KeyDown;  
    94.             dt = new DispatcherTimer();  
    95.             dt.Tick += Dt_Tick;  
    96.             dt.Interval = TimeSpan.FromMilliseconds(80);  
    97.             dt.Start();  
    98.             for (int i = 0; i 30; i++)  
    99.             {  
    100.                 //创建食物  
    101.                 food = new Border();  
    102.                 food.Width = food.Height = 10;  
    103.                 food.Background = Brushes.Yellow;  
    104.                 Canvas.SetTop(food, ra.Next(60) * 10);  
    105.                 Canvas.SetLeft(food, ra.Next(80) * 10);  
    106.                 food.CornerRadius = new CornerRadius(10);  
    107.                 back.Children.Add(food);  
    108.                 foodback.Add(food);  
    109.             }  
    110.         }  
    111.   
    112.         private void Dt_Tick(object sender, EventArgs e)  
    113.         {  
    114.             if (s == "up")  
    115.             {  
    116.                 Canvas.SetTop(snack[0], Canvas.GetTop(snack[0]) - snack[0].Height);  
    117.                 Run();  
    118.                   
    119.             }  
    120.             if (s == "down")  
    121.             {  
    122.                 Canvas.SetTop(snack[0], Canvas.GetTop(snack[0]) + snack[0].Height);  
    123.                 Run();  
    124.                  
    125.             }  
    126.             if (s == "left")  
    127.             {  
    128.                 Canvas.SetLeft(snack[0], Canvas.GetLeft(snack[0]) - snack[0].Width);  
    129.                 Run();  
    130.                   
    131.             }  
    132.             if (s == "right")  
    133.             {  
    134.                 Canvas.SetLeft(snack[0], Canvas.GetLeft(snack[0]) + snack[0].Width);  
    135.                 Run();  
    136.                   
    137.             }  
    138.             if (s1 == "w")  
    139.             {  
    140.                 Canvas.SetTop(snack1[0], Canvas.GetTop(snack1[0]) - snack1[0].Height);  
    141.                 Run1();  
    142.             }  
    143.             if (s1 == "s")  
    144.             {  
    145.                 Canvas.SetTop(snack1[0], Canvas.GetTop(snack1[0]) + snack1[0].Height);  
    146.                 Run1();  
    147.             }  
    148.             if (s1 == "a")  
    149.             {  
    150.                 Canvas.SetLeft(snack1[0], Canvas.GetLeft(snack1[0]) - snack1[0].Width);  
    151.                 Run1();  
    152.             }  
    153.             if (s1 == "d")  
    154.             {  
    155.                 Canvas.SetLeft(snack1[0], Canvas.GetLeft(snack1[0]) + snack1[0].Width);  
    156.                 Run1();  
    157.             }  
    158.             for (int i = 0; i 30; i++)  
    159.             {  
    160.                 if (Canvas.GetTop(snack1[0]) == Canvas.GetTop(foodback[i]) && Canvas.GetLeft(snack1[0]) == Canvas.GetLeft(foodback[i]))  
    161.                 {  
    162.                     Canvas.SetTop(foodback[i], ra.Next(60) * 10);  
    163.                     Canvas.SetLeft(foodback[i], ra.Next(80) * 10);  
    164.   
    165.                     //创建一个border添加到尾部  
    166.                     Border bdfood1 = new Border();  
    167.                     bdfood1.Width = bdfood1.Height = 10;  
    168.                     bdfood1.Background = Brushes.DarkBlue;  
    169.                     bdfood1.CornerRadius = new CornerRadius(5);  
    170.                     Canvas.SetTop(bdfood1, Canvas.GetTop(snack[snack.Count - 1]));  
    171.                     Canvas.SetLeft(bdfood1, Canvas.GetLeft(snack[snack.Count - 1]));  
    172.                     snack1.Add(bdfood1);  
    173.                     back.Children.Add(bdfood1);  
    174.   
    175.                     //创建一个border,存放加到后面的蛇身的位置  
    176.                     Border br1 = new Border();  
    177.                     Canvas.SetTop(br1, Canvas.GetTop(bdfood1));  
    178.                     Canvas.SetLeft(br1, Canvas.GetLeft(bdfood1));  
    179.                     snakeback1 .Add(br1);  
    180.                 }  
    181.             }  
    182.             for (int i = 0; i 30; i++)  
    183.             {  
    184.                 if (Canvas.GetTop(snack[0]) == Canvas.GetTop(foodback[i]) && Canvas.GetLeft(snack[0]) == Canvas.GetLeft(foodback[i]))  
    185.                 {  
    186.                     Canvas.SetTop(foodback[i], ra.Next(60) * 10);  
    187.                     Canvas.SetLeft(foodback[i], ra.Next(80) * 10);  
    188.   
    189.                     //创建一个border添加到尾部  
    190.                     Border bdfood = new Border();  
    191.                     bdfood.Width = bdfood.Height = 10;  
    192.                     bdfood.Background = Brushes.Black;  
    193.                     bdfood.CornerRadius = new CornerRadius(5);  
    194.                     Canvas.SetTop(bdfood, Canvas.GetTop(snack[snack.Count - 1]));  
    195.                     Canvas.SetLeft(bdfood, Canvas.GetLeft(snack[snack.Count - 1]));  
    196.                     snack.Add(bdfood);  
    197.                     back.Children.Add(bdfood);  
    198.   
    199.                     //创建一个border,存放加到后面的蛇身的位置  
    200.                     Border br = new Border();  
    201.                     Canvas.SetTop(br, Canvas.GetTop(bdfood));  
    202.                     Canvas.SetLeft(br, Canvas.GetLeft(bdfood));  
    203.                     snakeback.Add(br);  
    204.                 }  
    205.             }  
    206.             for (int i = 1; i snack.Count; i++)  
    207.             {  
    208.                 if (Canvas.GetTop(snack[0]) == Canvas.GetTop(snack[i]) && Canvas.GetLeft(snack[0]) == Canvas.GetLeft(snack[i]))  
    209.                 {  
    210.                     dt.Stop();  
    211.                     MessageBox.Show("GAME  OVER!");  
    212.                 }  
    213.             }  
    214.             if (Canvas.GetTop(snack[0]) == 0 || Canvas.GetLeft(snack[0]) == 0 || Canvas.GetTop(snack[0]) == 560 || Canvas.GetLeft(snack[0]) == 780)  
    215.             {  
    216.                 dt.Stop();  
    217.                 MessageBox.Show("GAME  OVER!");  
    218.             }  
    219.             for (int i = 1; i snack1.Count; i++)  
    220.             {  
    221.                 if (Canvas.GetTop(snack1[0]) == Canvas.GetTop(snack1[i]) && Canvas.GetLeft(snack1[0]) == Canvas.GetLeft(snack1[i]))  
    222.                 {  
    223.                     dt.Stop();  
    224.                     MessageBox.Show("GAME  OVER!");  
    225.                 }  
    226.             }  
    227.             if (Canvas.GetTop(snack1[0]) == 0 || Canvas.GetLeft(snack1[0]) == 0 || Canvas.GetTop(snack1[0]) == 560 || Canvas.GetLeft(snack1[0]) == 780)  
    228.             {  
    229.                 dt.Stop();  
    230.                 MessageBox.Show("GAME  OVER!");  
    231.             }  
    232.         }  
    233.         private void Run()  
    234.         {  
    235.             for (int i = 1; i snack.Count; i++)  
    236.             {  
    237.                 Canvas.SetTop(snack[i], Canvas.GetTop(snakeback[i - 1]));  
    238.                 Canvas.SetLeft(snack[i], Canvas.GetLeft(snakeback[i - 1]));  
    239.             }  
    240.             for (int i = 0; i snack.Count; i++)  
    241.             {  
    242.                 Canvas.SetTop(snakeback[i], Canvas.GetTop(snack[i]));  
    243.                 Canvas.SetLeft(snakeback[i], Canvas.GetLeft(snack[i]));  
    244.             }  
    245.         }  
    246.         private void Run1()  
    247.         {  
    248.             for (int i = 1; i snack1.Count; i++)  
    249.             {  
    250.                 Canvas.SetTop(snack1[i], Canvas.GetTop(snakeback1[i - 1]));  
    251.                 Canvas.SetLeft(snack1[i], Canvas.GetLeft(snakeback1[i - 1]));  
    252.             }  
    253.             for (int i = 0; i snack1.Count; i++)  
    254.             {  
    255.                 Canvas.SetTop(snakeback1[i], Canvas.GetTop(snack1[i]));  
    256.                 Canvas.SetLeft(snakeback1[i], Canvas.GetLeft(snack1[i]));  
    257.             }  
    258.         }  
    259.         private void MainWindow_KeyDown(object sender, KeyEventArgs e)  
    260.         {  
    261.             if (e.Key == Key.Up && s != "down")  
    262.             {  
    263.                 s = "up";  
    264.             }  
    265.             if (e.Key == Key.Down && s != "up")  
    266.             {  
    267.                 s = "down";  
    268.             }  
    269.             if (e.Key == Key.Left && s != "right")  
    270.             {  
    271.                 s = "left";  
    272.             }  
    273.             if (e.Key == Key.Right && s != "left")  
    274.             {  
    275.                 s = "right";  
    276.             }  
    277.             if (e.Key == Key.W && s1 != "s")  
    278.             {  
    279.                 s1 = "w";  
    280.             }  
    281.             if (e.Key == Key.S && s1 != "w")  
    282.             {  
    283.                 s1 = "s";  
    284.             }  
    285.             if (e.Key == Key.A && s1 != "d")  
    286.             {  
    287.                 s1 = "a";  
    288.             }  
    289.             if (e.Key == Key.D && s1 != "a")  
    290.             {  
    291.                 s1 = "d";  
    292.             }  
    293.         }  
    294.     }  
    295. }  
  • 相关阅读:
    [战略]当你收到面试通知后,如下的准备可以大大提升面试成功率
    tfzq & dml
    kjl & jsd(1yet)内存泄漏定位
    面试 sn (1yet) zk watcher原理
    thread.join的本质
    关于linux中的man
    linux 新手入门
    Linux 中如何卸载已安装的软件(转载)
    如何在Linux下创建与解压,安装zip, tar, tar.gz和tar.bz2文件
    Linux系统下如何查看及修改文件读写权限
  • 原文地址:https://www.cnblogs.com/wjrelax/p/8035061.html
Copyright © 2020-2023  润新知