明天就要去上海大学参加 2015赛季 ACM/ICPC最后一场比赛 —— EC-Final,在这之前,顺利地把期末大作业赶出来了。

纯手工打造。庆幸的是,历时四天,现在基本完工了。

做个作业真不容易,音乐要自己找,图片要自己P,代码也要自己写... ... 早起晚睡,脖子酸... ...

下载地址:http://pan.baidu.com/s/1mhIO1b6

下载之后先解压,然后打开DestroyStars\DestroyStars\bin\Debug文件夹下的DestroyStars.exe

据说会报毒!? 我那么善良的人怎么会制造病毒... .. 如果报毒了,解压之前关闭一下杀毒软件吧...真的没毒的。。。

预览图:

【开发过程】

Day 1.上午  “妈呀..期末快到了耶!C#学了什么?好像什么都不会啊!”.....就这样,我开始了我的期末大作业的开发,上午看了一下老师的课件,随便琢磨了一下就开始了,游戏中的所有星星方块都是一张一张的图片,画图部分就纠结了半天了,但最后还是被我画了出来。

Day 1.下午 先做了随机生成10*10地图,这个似乎so easy.. .. 然后我就是到了算法部分了,也是整个游戏中仅有的我最擅长写的一部分,消灭星星消除的是连通块,本想用广度优先搜索的,但是因为不知道C#中队列的语法,最终还是采用了深度优先搜索。palapala,这部分很快就写完了。之后做的就是方块移动的过程,也不难吧,用timer控制一下,每隔一定的时间刷新一下图片的位置。 第一天结束之后,把最最核心的东西完成了,之后就是外观与游戏玩法的添加。

Day2. 这一天似乎做的事情比较少,找了几张星星、鼠标的图片,然后消除效果的制作。

Day3. 三个技能基本定型,RMB系统基本定型,积分系统基本定型,外观基本定型。

Day4. 闯关模式基本定型,加上了音效与背景音乐,写了一下玩法说明书。

代码不多贴了,下载之后也能看到的。

放一下 Game.CS 的吧.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Media;
  10. namespace DestroyStars
  11. {
  12. public partial class Game : Form
  13. {
  14. int Add_width = ;
  15. int Add_height = ;
  16. Diamond[] Dia = new Diamond[*];
  17. int height = ;//高
  18. int width=;//宽
  19. int[,] map = new int[, ];//定义地图
  20. int[,] flag = new int[, ];//用于深度优先搜索求连通块
  21. int[,] dir = new int[, ];//搜索时用到的四个方向
  22. int[] tot = new int[];//方块掉落时候用的
  23. int[] temp = new int[];//临时存储
  24. int D;//控制下落
  25.  
  26. Label[] labels = new Label[*];
  27. int T;//控制显示效果
  28. int Tot;//控制显示效果
  29. int GameState;//控制游戏状态
  30. int time_font;//控制下一关字样的显示时间
  31.  
  32. int Now_toll = ;//关卡数量
  33. int score = ;//计分
  34. int RMB = ;
  35.  
  36. int num_Skill1 = ;
  37. int num_Skill2 = ;
  38. int num_Skill3 = ;
  39.  
  40. String news;
  41.  
  42. public Game()
  43. {
  44. InitializeComponent();
  45. }
  46.  
  47. //技能按钮状态更新
  48. void update_skill_button()
  49. {
  50. if (num_Skill1 > ) button2.Enabled = true;
  51. else button2.Enabled = false;
  52.  
  53. if (num_Skill2 > ) button1.Enabled = true;
  54. else button1.Enabled = false;
  55.  
  56. if (num_Skill3 > ) button3.Enabled = true;
  57. else button3.Enabled = false;
  58.  
  59. if (RMB < ) button4.Enabled = false;
  60. else button4.Enabled = true;
  61.  
  62. if (RMB < ) button5.Enabled = false;
  63. else button5.Enabled = true;
  64.  
  65. if (RMB < ) button6.Enabled = false;
  66. else button6.Enabled = true;
  67. }
  68.  
  69. //随机生成地图
  70. void Rand()
  71. {
  72. Random myRand = new Random(DateTime.Now.Second);
  73. for (int i = ; i < height; i++)
  74. for (int j = ; j < width; j++)
  75. map[i, j] = myRand.Next(,);
  76.  
  77. for (int i = ; i < height; i++)
  78. for (int j = ; j < width; j++)
  79. Dia[i * width + j] = new Diamond(map[i, j], * j + Add_width, * i + Add_height, * j + Add_width, * i + Add_height);
  80. }
  81.  
  82. //更新
  83. void Update()
  84. {
  85. for (int i = ; i < height; i++)
  86. for (int j = ; j < width; j++)
  87. Dia[i * width + j] = new Diamond(map[i, j], * j + Add_width, * i + Add_height, * j + Add_width, * i + Add_height);
  88.  
  89. pictureBox.Invalidate();
  90. }
  91.  
  92. //深度优先搜索计算连通块
  93. void DFS(int x, int y)
  94. {
  95. flag[x, y] = ;
  96. for (int i = ; i < ; i++)
  97. {
  98. int NewX = x + dir[i, ];
  99. int NewY = y + dir[i, ];
  100.  
  101. if (NewX >= && NewX < height)
  102. if (NewY >= && NewY < width)
  103. if (map[x, y] == map[NewX, NewY]&&map[x,y]!=)
  104. if (flag[NewX, NewY] == )
  105. DFS(NewX,NewY);
  106. }
  107. }
  108.  
  109. //下一关
  110. void GameSt()
  111. {
  112. Now_toll++;
  113. label2.Text = "目标:" + (Now_toll * + Now_toll * Now_toll * Now_toll * ).ToString();
  114. label5.Text = "关卡:" + Now_toll.ToString();
  115. news = news + "进入下一关," + label5.Text + "\r\n";
  116. textBox1.Text = news;
  117. //让文本框获取焦点
  118. this.textBox1.Focus();
  119. //设置光标的位置到文本尾
  120. this.textBox1.Select(this.textBox1.TextLength, );
  121. //滚动到控件光标处
  122. this.textBox1.ScrollToCaret();
  123. GameState = ;
  124. Rand();
  125. pictureBox.Invalidate();
  126.  
  127. }
  128.  
  129. //启动或者重新开始游戏之后的初始化
  130. void init()
  131. {
  132. dir[, ] = ; dir[, ] = ;
  133. dir[, ] = ; dir[, ] = -;
  134. dir[, ] = ; dir[, ] = ;
  135. dir[, ] = -; dir[, ] = ;
  136.  
  137. //设置游戏状态
  138. GameState = ;
  139.  
  140. RMB = ; label3.Text = "金币:" + RMB.ToString();
  141. score = ;
  142. Now_toll = ;
  143. num_Skill1 = ;
  144. num_Skill2 = ;
  145. num_Skill3 = ;
  146.  
  147. //绘制“游戏即将开始”字样
  148. Dia[] = new Diamond(, , , , );
  149.  
  150. //下一关字样
  151. Dia[] = new Diamond(, , , , );
  152.  
  153. //绘制鼠标
  154. Bitmap a = (Bitmap)Bitmap.FromFile("Image\\mouse.png");
  155. SetCursor(a, new Point(, ));
  156.  
  157. update_skill_button();
  158.  
  159. news = "消息列表:\r\n" + "欢迎来到消灭星星世界,赶紧开始拯救人类的行动吧!\r\n";
  160. textBox1.Text = news;
  161. label11.Text = "欢迎进入这个虚幻的世界";
  162.  
  163. ReStartGame.Enabled = false;
  164. }
  165.  
  166. private void Game_Load(object sender, EventArgs e)
  167. {
  168. init();
  169. }
  170.  
  171. //计算下落
  172. void Down()
  173. {
  174. for (int j = ; j < width; j++)
  175. {
  176. for (int i = ; i < ; i++) tot[i] = ;
  177. for (int i = height - ; i >= ; i--)
  178. {
  179. if (map[i, j] == ) tot[i] = tot[i + ] + ;
  180. else tot[i] = tot[i + ];
  181. }
  182. for (int i = height - ; i >= ; i--)
  183. {
  184. if (map[i, j] == ) tot[i] = -;
  185. temp[i] = map[i, j];
  186. map[i, j] = ;
  187. }
  188. for (int i = height - ; i >= ; i--)
  189. {
  190. if (tot[i] != -)
  191. {
  192. map[i + tot[i], j] = temp[i];
  193.  
  194. int id = i * width + j;
  195. Dia[id].Ex = j * + Add_width;
  196. Dia[id].Ey = (i + tot[i]) * + Add_height;
  197. }
  198. }
  199. }
  200. }
  201.  
  202. //计算左靠
  203. void Left()
  204. {
  205. for (int j = ; j < ; j++) tot[j] = ;
  206. for (int j = ; j < width; j++)
  207. {
  208. if (j == )
  209. {
  210. if (map[height - , ] == ) tot[j] = ;
  211. else tot[j] = ;
  212. }
  213. else
  214. {
  215. if (map[height - , j] == ) tot[j] = tot[j - ] + ;
  216. else tot[j] = tot[j - ];
  217. }
  218. }
  219.  
  220. for (int j = ; j < width; j++)
  221. if (map[height - , j] == ) tot[j] = -;
  222.  
  223. for (int j = ; j < width; j++)
  224. for (int i = ; i < height; i++)
  225. if (tot[j] != -)
  226. map[i, j - tot[j]] = map[i, j];
  227. for (int i = ; i < height; i++)
  228. {
  229. for (int j = ; j < width; j++)
  230. {
  231. int id = i * width + j;
  232. Dia[id].Ex = (j - tot[j]) * + Add_width;
  233. Dia[id].Ey = i * + Add_height;
  234. }
  235. }
  236. int Max = -;
  237. for (int j = ; j < width; j++)
  238. if (tot[j] != -)
  239. if (j - tot[j] > Max)
  240. Max = j - tot[j];
  241. for (int j = Max + ; j < width; j++)
  242. for (int i = ; i < height; i++)
  243. map[i, j] = ;
  244. }
  245.  
  246. //执行一系列操作
  247. void Effect()
  248. {
  249. axWindowsMediaPlayer1.URL = "Music\\mus1.wav";
  250. axWindowsMediaPlayer1.Ctlcontrols.play();
  251.  
  252. Tot = ;
  253. for (int i = ; i < height; i++)
  254. {
  255. for (int j = ; j < width; j++)
  256. {
  257. if (flag[i, j] == )
  258. {
  259. labels[Tot] = new Label();
  260. labels[Tot].Size = new System.Drawing.Size(, );
  261. labels[Tot].Image = Image.FromFile("Image\\xg.gif");
  262. labels[Tot].Location = new Point(j * + Add_width + , i * + Add_height + );
  263. this.pictureBox.Controls.Add(labels[Tot]);
  264. Tot++;
  265. flag[i, j] = ;
  266. }
  267. }
  268. }
  269.  
  270. T = ;
  271. timer3.Enabled = true;
  272. }
  273.  
  274. //判断是否还可以消去
  275. void Judge()
  276. {
  277. int res = ;
  278. for (int i = ; i < height; i++)
  279. {
  280. for (int j = ; j < width; j++)
  281. {
  282. if (map[i, j] == ) continue;
  283. for (int ii = ; ii < height; ii++)
  284. for (int jj = ; jj < width; jj++)
  285. flag[ii, jj] = ;
  286.  
  287. //计算连通块
  288. DFS(i, j);
  289.  
  290. int Count = ;
  291. for (int ii = ; ii < height; ii++)
  292. for (int jj = ; jj < width; jj++)
  293. if (flag[ii, jj] == )
  294. Count++;
  295.  
  296. if (Count >= )
  297. {
  298. res = ;
  299. break;
  300. }
  301. }
  302. if (res == ) break;
  303. }
  304.  
  305. for (int ii = ; ii < height; ii++)
  306. for (int jj = ; jj < width; jj++)
  307. flag[ii, jj] = ;
  308.  
  309. if (res == )
  310. {
  311. axWindowsMediaPlayer1.URL = "Music\\next.mp3";
  312. axWindowsMediaPlayer1.Ctlcontrols.play();
  313.  
  314. //显示下一关字样
  315. if (score >= Now_toll * + Now_toll * Now_toll * Now_toll * )
  316. {
  317. GameState = ;
  318. time_font = ;
  319. pictureBox.Invalidate();
  320. timer4.Enabled = true;
  321. }
  322.  
  323. else//游戏结束,跳出窗口
  324. {
  325. label1.Text = "Score:0";
  326. label2.Text = "目标:0";
  327. StartGame.Enabled = true;
  328. textBox_Name.Enabled = true;
  329. textBox_Name.Text = "";
  330. label4.Text = "玩家:";
  331.  
  332. MessageBox.Show("由于未达到本关的目标分数,所以本次游戏结束啦!恭喜你!" + textBox_Name.Text + "得分:" + score.ToString(), "友情提示");
  333. End End1 = new End();
  334. End1.Show();
  335.  
  336. this.Close();
  337. init();
  338. pictureBox.Invalidate();
  339. }
  340. }
  341. }
  342.  
  343. //技能1 重置地图
  344. void Skill_1()
  345. {
  346. Random myRand = new Random(DateTime.Now.Second);
  347. for (int i = ; i < height; i++)
  348. for (int j = ; j < width; j++)
  349. if (map[i, j] != )
  350. map[i, j] = myRand.Next(, );
  351. Update();
  352. }
  353.  
  354. //技能2 随机清除一列
  355. void Skill_2()
  356. {
  357. int Max=;
  358. for (int i = ; i < width; i++)
  359. if (map[height - , i] != )
  360. Max = i;
  361. Random myRand = new Random(DateTime.Now.Second);
  362. int res = myRand.Next(, Max);
  363. for (int i = ; i < height; i++)
  364. if (map[i, res] != )
  365. { map[i, res] = ; flag[i, res] = ; score = score + ; }
  366.  
  367. label1.Text = "分数:" + score.ToString();
  368.  
  369. Effect();
  370. }
  371.  
  372. //技能3 随机清除一种颜色
  373. void Skill_3()
  374. {
  375. int[] Kind = new int[];
  376. int[] F = new int[];
  377. int n = ;
  378. for (int i = ; i < height; i++)
  379. {
  380. for (int j = ; j < width; j++)
  381. {
  382. if (map[i, j] != && F[map[i, j]] == )
  383. {
  384. F[map[i, j]] = ;
  385. Kind[n++] = map[i, j];
  386. }
  387. }
  388. }
  389. if (n != )
  390. {
  391. Random myRand = new Random(DateTime.Now.Second);
  392. int res = myRand.Next(, n);
  393.  
  394. for (int i = ; i < height; i++)
  395. {
  396. for (int j = ; j < width; j++)
  397. {
  398. if (map[i, j] == Kind[res])
  399. {
  400. score = score + ;
  401. map[i, j] = ;
  402. flag[i, j] = ;
  403. }
  404. }
  405. }
  406.  
  407. label1.Text = "分数:" + score.ToString();
  408. Effect();
  409. }
  410. }
  411.  
  412. private void Game_MouseDown(object sender, MouseEventArgs e)
  413. {
  414.  
  415. }
  416.  
  417. //鼠标点击
  418. private void pictureBox_MouseDown(object sender, MouseEventArgs e)
  419. {
  420. if (timer1.Enabled == false && timer2.Enabled == false && timer3.Enabled == false &&timer4.Enabled==false&&e.Y - Add_height > && e.X - Add_width > )
  421. {
  422. int nowR = (e.Y - Add_height) / ;//鼠标点击的行
  423. int nowC = (e.X - Add_width) / ;//鼠标点击的列
  424.  
  425. if (flag[nowR, nowC] == )
  426. {
  427. Update();
  428. axWindowsMediaPlayer1.URL = "Music\\click.wav";
  429. axWindowsMediaPlayer1.Ctlcontrols.play();
  430. for (int i = ; i < height; i++)
  431. for (int j = ; j < width; j++)
  432. flag[i, j] = ;
  433.  
  434. //计算连通块
  435. DFS(nowR, nowC);
  436.  
  437. int Count = ;
  438. for (int i = ; i < height; i++)
  439. for (int j = ; j < width; j++)
  440. if (flag[i, j] == )
  441. Count++;
  442.  
  443. if (Count < )
  444. {
  445. for (int i = ; i < height; i++)
  446. for (int j = ; j < width; j++)
  447. flag[i, j] = ;
  448. }
  449.  
  450. else
  451. {
  452. //画线
  453. for (int i = ; i < height; i++)
  454. for (int j = ; j < width; j++)
  455. if (flag[i, j] == )
  456. {
  457. int id = i * width + j;
  458. Dia[id].Change();
  459. }
  460.  
  461. int add_RMB = ;
  462. if (Count <= ) add_RMB = ;
  463. if (Count >= && Count <= ) add_RMB = ;
  464. if (Count >= && Count <= ) add_RMB = ;
  465. if (Count >= ) add_RMB = ;
  466. label11.Text = "消除选中部分 积分+" + ( * Count * Count).ToString() + ",金币+" + add_RMB.ToString();
  467. pictureBox.Invalidate();
  468. }
  469.  
  470. }
  471.  
  472. else if (flag[nowR, nowC] == )
  473. {
  474. int Count = ;
  475. for (int i = ; i < height; i++)
  476. for (int j = ; j < width; j++)
  477. if (flag[i, j] == )
  478. Count++;
  479.  
  480. score = score + Count * Count * ;
  481.  
  482. label1.Text = "分数:" + score.ToString();
  483.  
  484. int add_RMB = ;
  485. if (Count <= )
  486. {
  487. add_RMB = ;
  488. label11.Text = "Great! ";
  489. }
  490. if (Count >= && Count <= )
  491. {
  492. add_RMB = ;
  493. label11.Text = "Cool! ";
  494. }
  495. if (Count >= && Count <= )
  496. {
  497. add_RMB = ;
  498. label11.Text = "Perfect! ";
  499. }
  500. if (Count >= )
  501. {
  502. add_RMB = ;
  503. label11.Text = "帅呆了! ";
  504. }
  505. label11.Text += "积分+" + ( * Count * Count).ToString() + ",金币+" + add_RMB.ToString();
  506. news = news + label11.Text + "\r\n";
  507. textBox1.Text = news;
  508.  
  509. //让文本框获取焦点
  510. this.textBox1.Focus();
  511. //设置光标的位置到文本尾
  512. this.textBox1.Select(this.textBox1.TextLength, );
  513. //滚动到控件光标处
  514. this.textBox1.ScrollToCaret();
  515.  
  516. RMB = RMB + add_RMB;
  517.  
  518. label3.Text = "金币:"+RMB.ToString();
  519.  
  520. update_skill_button();
  521.  
  522. for (int i = ; i < height; i++)
  523. for (int j = ; j < width; j++)
  524. if (flag[i, j] == )
  525. map[i, j] = ;
  526.  
  527. //进行一系列操作
  528. Effect();
  529.  
  530. }
  531. }
  532. }
  533.  
  534. //执行下落
  535. private void timer1_Tick(object sender, EventArgs e)
  536. {
  537. D = width * height;
  538. for (int i = ; i < width * height; i++)
  539. D = D - Dia[i].move();
  540.  
  541. if (D == )
  542. {
  543. timer1.Enabled = false;
  544. Update();
  545.  
  546. //计算左靠
  547. Left();
  548.  
  549. //开始左靠
  550. timer2.Enabled = true;
  551. }
  552. pictureBox.Invalidate();
  553. }
  554.  
  555. private void pictureBox_Paint(object sender, PaintEventArgs e)
  556. {
  557. if (GameState == )
  558. {
  559. for (int i = width * height - ; i >= ; i--)
  560. Dia[i].Draw(e.Graphics);
  561. }
  562.  
  563. else if (GameState == )
  564. {
  565. Dia[].Draw(e.Graphics);
  566. }
  567.  
  568. else if (GameState == )
  569. {
  570. Dia[].Draw(e.Graphics);
  571. }
  572. }
  573.  
  574. //执行左靠
  575. private void timer2_Tick(object sender, EventArgs e)
  576. {
  577. D = width * height;
  578. for (int i = ; i < width * height; i++)
  579. D = D - Dia[i].move();
  580.  
  581. if (D == )
  582. {
  583. timer2.Enabled = false;
  584. Update();
  585.  
  586. //判断是否还有解
  587. Judge();
  588. }
  589. pictureBox.Invalidate();
  590. }
  591.  
  592. //执行消除星星的效果
  593. private void timer3_Tick(object sender, EventArgs e)
  594. {
  595. T++;
  596. if (T == )
  597. {
  598. timer3.Enabled = false;
  599.  
  600. for (int i = ; i < Tot; i++)
  601. {
  602. labels[i].Size = new System.Drawing.Size(, );
  603. labels[i].Location = new Point(, );
  604. this.pictureBox.Controls.Add(labels[i]);
  605. }
  606.  
  607. //更新
  608. Update();
  609.  
  610. //计算下落
  611. Down();
  612.  
  613. //开始下落
  614. timer1.Enabled = true;
  615. }
  616. }
  617.  
  618. private void Close_Click(object sender, EventArgs e)
  619. {
  620.  
  621. this.Close();
  622. }
  623.  
  624. private void pictureBox_Click(object sender, EventArgs e)
  625. {
  626.  
  627. }
  628.  
  629. //执行技能1
  630. private void button1_Click(object sender, EventArgs e)
  631. {
  632. news = news + "使用技能:唯我独尊\r\n";
  633. textBox1.Text = news;
  634. //让文本框获取焦点
  635. this.textBox1.Focus();
  636. //设置光标的位置到文本尾
  637. this.textBox1.Select(this.textBox1.TextLength, );
  638. //滚动到控件光标处
  639. this.textBox1.ScrollToCaret();
  640. num_Skill2--;
  641. label9.Text = "唯我独尊 ×" + num_Skill2.ToString();
  642. Skill_1();
  643. update_skill_button();
  644. }
  645.  
  646. //执行技能2
  647. private void button2_Click(object sender, EventArgs e)
  648. {
  649. news = news + "使用技能:浮生万刃\r\n";
  650. textBox1.Text = news;
  651. //让文本框获取焦点
  652. this.textBox1.Focus();
  653. //设置光标的位置到文本尾
  654. this.textBox1.Select(this.textBox1.TextLength, );
  655. //滚动到控件光标处
  656. this.textBox1.ScrollToCaret();
  657. num_Skill1--;
  658. label8.Text = "浮生万仞 ×" + num_Skill1.ToString();
  659. Skill_2();
  660. update_skill_button();
  661. }
  662.  
  663. //执行技能3
  664. private void button3_Click(object sender, EventArgs e)
  665. {
  666. news = news + "使用技能:咫尺天涯\r\n";
  667. textBox1.Text = news;
  668. //让文本框获取焦点
  669. this.textBox1.Focus();
  670. //设置光标的位置到文本尾
  671. this.textBox1.Select(this.textBox1.TextLength, );
  672. //滚动到控件光标处
  673. this.textBox1.ScrollToCaret();
  674.  
  675. num_Skill3--;
  676. label10.Text = "咫尺天涯 ×" + num_Skill3.ToString();
  677. Skill_3();
  678. update_skill_button();
  679. }
  680.  
  681. //自定义光标
  682. public void SetCursor(Bitmap cursor, Point hotPoint)
  683. {
  684. int hotX = hotPoint.X;
  685. int hotY = hotPoint.Y;
  686. Bitmap myNewCursor = new Bitmap(cursor.Width * - hotX, cursor.Height * - hotY);
  687. Graphics g = Graphics.FromImage(myNewCursor);
  688. g.Clear(Color.FromArgb(, , , ));
  689. g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width,
  690. cursor.Height);
  691. this.Cursor = new Cursor(myNewCursor.GetHicon());
  692.  
  693. g.Dispose();
  694. myNewCursor.Dispose();
  695. }
  696.  
  697. //开始游戏
  698. private void StartGame_Click(object sender, EventArgs e)
  699. {
  700. axWindowsMediaPlayer1.URL = "Music\\click.wav";
  701. axWindowsMediaPlayer1.Ctlcontrols.play();
  702.  
  703. news += "游戏已经开始啦!" + "当前玩家:" + textBox_Name.Text+"!\r\n";
  704. textBox1.Text = news;
  705. label11.Text = "游戏开始啦!";
  706. ReStartGame.Enabled = true;
  707. StartGame.Enabled = false;
  708. textBox_Name.Enabled = false;
  709. GameState = ;
  710. score = ;
  711. Now_toll = ;
  712. label4.Text = "玩家:" + textBox_Name.Text;
  713. update_skill_button();
  714. GameSt();
  715. }
  716.  
  717. //重新开始游戏
  718. private void ReStartGame_Click(object sender, EventArgs e)
  719. {
  720. axWindowsMediaPlayer1.URL = "Music\\click.wav";
  721. axWindowsMediaPlayer1.Ctlcontrols.play();
  722.  
  723. label1.Text = "Score:0";
  724. label2.Text = "目标:0";
  725.  
  726. StartGame.Enabled = true;
  727. textBox_Name.Enabled = true;
  728. textBox_Name.Text = "";
  729. label4.Text = "玩家:" ;
  730. init();
  731. pictureBox.Invalidate();
  732. }
  733.  
  734. private void label5_Click(object sender, EventArgs e)
  735. {
  736.  
  737. }
  738.  
  739. private void button4_Click(object sender, EventArgs e)
  740. {
  741. axWindowsMediaPlayer1.URL = "Music\\click.wav";
  742. axWindowsMediaPlayer1.Ctlcontrols.play();
  743. if (RMB - >= )
  744. {
  745. RMB = RMB - ;
  746. num_Skill1++;
  747. label3.Text = "金币:" + RMB.ToString();
  748. label8.Text = "浮生万仞 ×" + num_Skill1.ToString();
  749. news = news + "购买一个浮生万仞,金币-2." + "\r\n";
  750. textBox1.Text = news;
  751. //让文本框获取焦点
  752. this.textBox1.Focus();
  753. //设置光标的位置到文本尾
  754. this.textBox1.Select(this.textBox1.TextLength, );
  755. //滚动到控件光标处
  756. this.textBox1.ScrollToCaret();
  757. }
  758. else
  759. {
  760. news = news + "金币不足,购买失败!" + "\r\n";
  761. textBox1.Text = news;
  762. //让文本框获取焦点
  763. this.textBox1.Focus();
  764. //设置光标的位置到文本尾
  765. this.textBox1.Select(this.textBox1.TextLength, );
  766. //滚动到控件光标处
  767. this.textBox1.ScrollToCaret();
  768. MessageBox.Show("RMB不够啦!请给Me充钱!然后联系作者!", "友情提示");
  769. }
  770. update_skill_button();
  771. }
  772.  
  773. private void button5_Click(object sender, EventArgs e)
  774. {
  775. axWindowsMediaPlayer1.URL = "Music\\click.wav";
  776. axWindowsMediaPlayer1.Ctlcontrols.play();
  777. if (RMB - >= )
  778. {
  779. RMB = RMB - ;
  780. num_Skill2++;
  781. label3.Text = "金币:" + RMB.ToString();
  782. label9.Text = "唯我独尊 ×" + num_Skill2.ToString();
  783. news = news + "购买一个唯我独尊,金币-5." + "\r\n";
  784. textBox1.Text = news;
  785. //让文本框获取焦点
  786. this.textBox1.Focus();
  787. //设置光标的位置到文本尾
  788. this.textBox1.Select(this.textBox1.TextLength, );
  789. //滚动到控件光标处
  790. this.textBox1.ScrollToCaret();
  791. }
  792. else
  793. {
  794. news = news + "金币不足,购买失败!" + "\r\n";
  795. textBox1.Text = news;
  796. //让文本框获取焦点
  797. this.textBox1.Focus();
  798. //设置光标的位置到文本尾
  799. this.textBox1.Select(this.textBox1.TextLength, );
  800. //滚动到控件光标处
  801. this.textBox1.ScrollToCaret();
  802. MessageBox.Show("RMB不够啦!请给Me充钱!然后联系作者!", "友情提示");
  803. }
  804. update_skill_button();
  805. }
  806.  
  807. private void button6_Click(object sender, EventArgs e)
  808. {
  809. axWindowsMediaPlayer1.URL = "Music\\click.wav";
  810. axWindowsMediaPlayer1.Ctlcontrols.play();
  811. if (RMB - >= )
  812. {
  813. RMB = RMB - ;
  814. num_Skill3++;
  815. label3.Text = "金币:" + RMB.ToString();
  816. label10.Text = "咫尺天涯 ×" + num_Skill3.ToString();
  817. news = news + "购买一个咫尺天涯,金币-5." + "\r\n";
  818. textBox1.Text = news;
  819. //让文本框获取焦点
  820. this.textBox1.Focus();
  821. //设置光标的位置到文本尾
  822. this.textBox1.Select(this.textBox1.TextLength, );
  823. //滚动到控件光标处
  824. this.textBox1.ScrollToCaret();
  825. }
  826. else
  827. {
  828. news = news + "金币不足,购买失败!" + "\r\n";
  829. textBox1.Text = news;
  830. //让文本框获取焦点
  831. this.textBox1.Focus();
  832. //设置光标的位置到文本尾
  833. this.textBox1.Select(this.textBox1.TextLength, );
  834. //滚动到控件光标处
  835. this.textBox1.ScrollToCaret();
  836. MessageBox.Show("RMB不够啦!请给Me充钱!然后联系作者!", "友情提示");
  837. }
  838. update_skill_button();
  839. }
  840.  
  841. private void timer4_Tick(object sender, EventArgs e)
  842. {
  843. time_font++;
  844. if (time_font == )
  845. {
  846. timer4.Enabled = false;
  847. GameSt();
  848. }
  849. }
  850.  
  851. private void button7_Click(object sender, EventArgs e)
  852. {
  853.  
  854. }
  855. }
  856. }

[留念贴] C#开发技术期末大作业——星月之痕的更多相关文章

  1. C#期末大作业 消消乐 2017-06-01 18:11 275人阅读 评论(0) 收藏

    邻近期末,忙于刷题之余意识到期末大作业来不及了,匆匆赶下了作业,虽说做的很是粗糙,但完全原创的 下载链接 https://pan.baidu.com/s/1cCNLr4 大体的做大约3天完成了: 第一 ...

  2. Web程序设计基础期末大作业——模仿QQ飞车手游S联赛官网编写的网页

    QQ飞车手游是我非常喜欢的游戏,也是我现在为数不多的常在玩的游戏,刚好我Web程序设计基础的大作业是要做一套网站,我就借此机会模仿飞车S联赛官网的页面自己做了一个网页,又加了一些自己的元素,由于我做这 ...

  3. 图论期末大作业编程题(如何判断一个4连通4正则图为无爪、无K4图)

    博士期间估计这可能是唯一一个要编程的作业,搞了半天弄出这个东西,放这里为以后用到的时候查找方便. 说来也是可笑,读博士期间发现大家对上课也都没什么兴趣,老师也是那么回事,都说博士期间学的课程是要有助于 ...

  4. 大一上C语言期末大作业-成绩管理系统

    都过了半年的作业了,觉得做过去得留下点什么,所以整理了代码发一下博客. 声明:程序在DevC++下用c文件模式可以正常编译使用.(控制台程序) 程序结构:

  5. fir.im Weekly - 2016 移动开发技术大回顾

    2016 年是移动技术发展迅速的一年,认认真真回顾这一年必不可少.@移动开发前线 的 这篇 2016移动开发技术巡礼 ,精心盘点了 2016 年 移动开发技术大事件,分为 iOS/Android平台篇 ...

  6. 【大数据应用技术】作业十二|Hadoop综合大作业

    本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 前言 本次作业是在<爬虫大作业>的基础上进行的 ...

  7. 大作业:开发一个精美的 Web 网站

    大作业:开发一个精美的 Web 网站 实验目的: 掌握一个完整精美网页开发的基本方法 实验要求: 1.开发一个 Web 站点,至少有 3 个以上的页面: 2.采用 CSS 和 HTML 文件分开方法: ...

  8. 期末Java Web大作业----简易的学生管理系统

    学生信息管理系统(大作业) 2018-12-21:此文章已在我的网站更新,添加视图介绍等信息,源码请移步下载https://www.jeson.xin/javaweb-sims.html PS:首先不 ...

  9. 大数据应用期末总评——Hadoop综合大作业

    作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 Hadoop综合大作业 要求: 1.将爬虫大作业产生的csv文件 ...

随机推荐

  1. HDU4565 && 2013年长沙邀请赛A题

    部分转自http://blog.csdn.net/crazy______/article/details/9021169 #include<cstdio> using namespace ...

  2. mysql的架构

    和其他数据库相比,mysql有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,而理解其设计是发挥好作用的先决条件 每当我们在想起mysql的逻辑架构师,我们可以构造一副mysql各组件之间 ...

  3. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  4. SVN服务器搭建(3)

    转自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2408089.html vs 2013 svn插件:http://www.visua ...

  5. GridView中的编辑和删除按钮,执行更新和删除代码之前的更新提示或删除提示

    在GridView中,可以通过设计界面GridViewr任务->编辑列->CommandField,很简单的添加的编辑和删除按钮 在前台源码中,可以看到GridView自动生成了两个列. ...

  6. beanutils中jdbc

    public class JDBCTest { //    public static void main(String[] args) throws Exception {//        Cla ...

  7. java入门学习(十二)运算语句 if switch

    这两天在网上做兼职,耽误了些博客见谅哈 欢迎来我的博客:www.taomaipin.com java中的运算语句而且频繁用到的无法就是条件语句和循环语句,包括if,for,while,switch,b ...

  8. iOS 制作 framework 教程

    直接看步骤 废话不多说,哈哈! 1.新建一个静态库工程: 2:取自己喜欢的名字: 3.删除向导所生成工程中的 Target: 3.删除TestFrameWork对应的工程文件夹: 5:删除bulid ...

  9. IIS发布网站,浏览网站时候,出现 试图加载格式不正确的程序。

    异常来自HRESULT:0x8007000B 缘由:在64位操作系统下IIS发布32位的项目,报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误. 原因:程序集之间的通讯要么全是64位环境下 ...

  10. web代理进行跨域访问

    通过web代理进行跨域访问,http请求返回超时的问题定位   [现象] 在ajax通过web代理跨域访问时,http第一次登陆时正常,但是第二次再下发其他命令的时候总是返回 java.net.Soc ...