基于C# WPF框架的貪吃蛇

游戲開始界面


游戲開始

游戲簡介:

共有兩條蛇管引,吃到紅色食物加1分梆靖,吃到綠色毒食物減1分,知道0不減在抛;

碰到墻壁游戲結(jié)束钟病,碰到對方游戲結(jié)束,碰到自己游戲結(jié)束

此游戲通過Canvas畫布布局霜定,通過C#代碼實現(xiàn)


游戲主界面大小為1200*1000

界面設計:

<Window x:Class="貪吃蛇__.MainWindow"

? ? ? ? xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

? ? ? ? xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

? ? ? ? xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

? ? ? ? xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

? ? ? ? xmlns:local="clr-namespace:貪吃蛇__"

? ? ? ? mc:Ignorable="d"

? ? ? ? Title="貪吃蛇" Loaded="Window_Loaded" Height="700" Width="900">

? ? <Canvas Name="BG" Width = "1200" Height = "1000"></Canvas>

</Window>


全局聲明:

? ? ? Random ran = new Random();// 隨機對象

? ? ? ? int size = 20; // 邊框距離BG距離,格子數(shù)

? ? ? ? Canvas gameArea = new Canvas(); // 游戲區(qū)對象

? ? ? ? Border food = new Border(); //食物對象

? ? ? ? Border dufood = new Border(); // 毒食物對象

? ? ? ? List<Border> snakeList1 = new List<Border>(); // 存儲蛇1的泛型

? ? ? ? List<Border> snakeList2 = new List<Border>(); // 存儲蛇2的泛型

? ? ? ? DispatcherTimer moveTimer1 = new DispatcherTimer(); // 蛇1移動定時器

? ? ? ? DispatcherTimer moveTimer2 = new DispatcherTimer(); // 蛇2移動定時器

? ? ? ? SoundPlayer EatFm = new SoundPlayer(@"../../music/EatFood.wav"); // 吃食物音樂

? ? ? ? SoundPlayer EatDuFm = new SoundPlayer(@"../../music/EatDufood.wav");// 吃毒食物音樂

? ? ? ? SoundPlayer Overm = new SoundPlayer(@"../../music/Over.wav"); // 游戲結(jié)束音樂

? ? ? ? SoundPlayer BGm = new SoundPlayer(@"../../music/BGmusic.wav"); // 背景音樂

? ? ? ? int score = 0; //記錄分數(shù)

? ? ? ? Label feng = new Label(); // 分數(shù)對象

? ? ? ? bool Pand = true; // 游戲開始和暫停判斷

加載事件:

private void Window_Loaded(object sender, RoutedEventArgs e)

? ? ? ? {

? ? ? ? ? ? this.Background = Brushes.Cyan;

? ? ? ? ? ? this.WindowState = WindowState.Maximized; // 屏幕最大化

? ? ? ? ? ? BG.Background = new LinearGradientBrush(Colors.Yellow, Colors.Pink, 10);

? ? ? ? ? ? // 邊框

? ? ? ? ? ? Border bianKuang = new Border();

? ? ? ? ? ? bianKuang.Width = 1040;

? ? ? ? ? ? bianKuang.Height = 840;

? ? ? ? ? ? Canvas.SetLeft(bianKuang, size);

? ? ? ? ? ? Canvas.SetTop(bianKuang, size);

? ? ? ? ? ? bianKuang.BorderThickness = new Thickness(20); // 邊框厚度

? ? ? ? ? ? bianKuang.CornerRadius = new CornerRadius(10);? // 畫圓

? ? ? ? ? ? bianKuang.BorderBrush = Brushes.Green;

? ? ? ? ? ? BG.Children.Add(bianKuang);

? ? ? ? ? ? Image map = new Image();

? ? ? ? ? ? map.Source = new BitmapImage(new Uri("../../img/BGimg.png",UriKind.Relative));

? ? ? ? ? ? ImageBrush mp = new ImageBrush();

? ? ? ? ? ? mp.ImageSource = map.Source; // 顯示圖片

? ? ? ? ? ? // 游戲區(qū)

? ? ? ? ? ? gameArea.Width = 1000;

? ? ? ? ? ? gameArea.Height = 800;

? ? ? ? ? ? gameArea.Background = mp;

? ? ? ? ? ? mp.Stretch = Stretch.Fill;

? ? ? ? ? ? Canvas.SetLeft(gameArea, 2 * size);

? ? ? ? ? ? Canvas.SetTop(gameArea, 2 * size);

? ? ? ? ? ? BG.Children.Add(gameArea);

? ? ? ? ? ? // 得分對象

? ? ? ? ? ? feng.Width = 120;

? ? ? ? ? ? feng.Height = 50;

? ? ? ? ? ? Canvas.SetLeft(feng, 1060);

? ? ? ? ? ? Canvas.SetTop(feng, 100);

? ? ? ? ? ? feng.Background = Brushes.Coral;

? ? ? ? ? ? feng.Foreground = Brushes.DeepSkyBlue;

? ? ? ? ? ? feng.FontFamily = new FontFamily("楷體");

? ? ? ? ? ? feng.Content = "? 得分:" + score + "分";

? ? ? ? ? ? feng.FontSize = 20;

? ? ? ? ? ? BG.Children.Add(feng);

? ? ? ? ? ? // 蛇1移動定時器

? ? ? ? ? ? moveTimer1.Tick += MoveTimer1_Tick; ;

? ? ? ? ? ? moveTimer1.Interval = TimeSpan.FromMilliseconds(100);

? ? ? ? ? // 蛇2移動定時器

? ? ? ? ? ? moveTimer2.Tick += MoveTimer2_Tick;

? ? ? ? ? ? moveTimer2.Interval = TimeSpan.FromMilliseconds(100);

? ? ? ? ? ? // 開始按鈕

? ? ? ? ? ? Button Kaise = new Button();

? ? ? ? ? ? Kaise.Cursor = Cursors.Hand; // 鼠標移動到按鈕處變成手型

? ? ? ? ? ? Kaise.Width = 120;

? ? ? ? ? ? Kaise.Height = 50;

? ? ? ? ? ? Canvas.SetLeft(Kaise, 1060);

? ? ? ? ? ? Canvas.SetTop(Kaise, 160);

? ? ? ? ? ? Kaise.Content = "開始游戲";

? ? ? ? ? ? Kaise.FontFamily = new FontFamily("楷體");

? ? ? ? ? ? Kaise.BorderBrush = Brushes.Cyan; // 邊框顏色

? ? ? ? ? ? Kaise.Foreground = Brushes.DarkRed; // 字體顏色

? ? ? ? ? ? Kaise.FontSize = 20;

? ? ? ? ? ? Kaise.Background = Brushes.DarkKhaki;

? ? ? ? ? ? Kaise.Click += Kaise_Click;

? ? ? ? ? ? BG.Children.Add(Kaise);

? ? ? ? ? ? // 暫停按鈕

? ? ? ? ? ? Button Zanting = new Button();

? ? ? ? ? ? Zanting.Cursor = Cursors.Hand; // 鼠標移動到按鈕處變?yōu)槭中?/p>

? ? ? ? ? ? Zanting.Width = 120;

? ? ? ? ? ? Zanting.Height = 50;

? ? ? ? ? ? Canvas.SetLeft(Zanting, 1060);

? ? ? ? ? ? Canvas.SetTop(Zanting, 220);

? ? ? ? ? ? Zanting.Content = "暫停游戲";

? ? ? ? ? ? Zanting.FontFamily = new FontFamily("楷體");

? ? ? ? ? ? Zanting.BorderBrush = Brushes.Cyan;

? ? ? ? ? ? Zanting.Foreground = Brushes.DarkRed;

? ? ? ? ? ? Zanting.FontSize = 20;

? ? ? ? ? ? Zanting.Background = Brushes.BurlyWood;

? ? ? ? ? ? Zanting.Click += Zanting_Click;

? ? ? ? ? ? BG.Children.Add(Zanting);

? ? ? ? ? ? // 背景音樂播放

? ? ? ? ? ? BGm.Play();

? ? ? ? }


以上為部分代碼档悠,全部代碼查看:

https://blog.csdn.net/dust__/article/details/103578996

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市望浩,隨后出現(xiàn)的幾起案子辖所,更是在濱河造成了極大的恐慌,老刑警劉巖磨德,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缘回,死亡現(xiàn)場離奇詭異,居然都是意外死亡典挑,警方通過查閱死者的電腦和手機酥宴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來您觉,“玉大人拙寡,你說我怎么就攤上這事×账” “怎么了肆糕?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長在孝。 經(jīng)常有香客問我诚啃,道長,這世上最難降的妖魔是什么私沮? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任始赎,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘造垛。我一直安慰自己魔招,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布筋搏。 她就那樣靜靜地躺著仆百,像睡著了一般厕隧。 火紅的嫁衣襯著肌膚如雪奔脐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天吁讨,我揣著相機與錄音髓迎,去河邊找鬼。 笑死建丧,一個胖子當著我的面吹牛排龄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翎朱,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼橄维,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拴曲?” 一聲冷哼從身側(cè)響起争舞,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澈灼,沒想到半個月后竞川,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡叁熔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年委乌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荣回。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡遭贸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出心软,到底是詐尸還是另有隱情壕吹,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布糯累,位于F島的核電站算利,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泳姐。R本人自食惡果不足惜效拭,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缎患,春花似錦慕的、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至判导,卻和暖如春嫉父,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眼刃。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工绕辖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人擂红。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓仪际,卻偏偏與公主長得像,于是被迫代替她去往敵國和親昵骤。 傳聞我的和親對象是個殘疾皇子树碱,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容