using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _10方法
{
class Program
{
static void Main(string[] args)
{
//闪烁 播放一段特殊的背景音乐 屏幕停止
Program.PlayGame();
Program.WuDi();
Program.PlayGame();
Program.PlayGame();
Program.PlayGame();
Program.PlayGame();
Program.WuDi();
Console.ReadKey();
}
///
/// 正常玩游戏
///
public static void PlayGame()
{
Console.WriteLine("超级玛丽走呀走,跳呀跳,顶呀顶");
Console.WriteLine("超级玛丽走呀走,跳呀跳,顶呀顶");
Console.WriteLine("超级玛丽走呀走,跳呀跳,顶呀顶");
Console.WriteLine("超级玛丽走呀走,跳呀跳,顶呀顶");
Console.WriteLine("超级玛丽走呀走,跳呀跳,顶呀顶");
Console.WriteLine("突然,顶到了一个无敌");
}
///
/// 无敌
///
public static void WuDi()
{
Console.WriteLine("屏幕开始闪烁");
Console.WriteLine("播放无敌的背景音乐");
Console.WriteLine("屏幕停止");
}
}
}
/*
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _04方法概念
{
class Program
{
public static void Main(string[] args)
{
//比较两个数字的大小 返回最大的
//int a1 = 10;
//int a2 = 20;
int max = GetMax(10, 20);//实参
Console.WriteLine(max);
Console.ReadKey();
}
///
/// 计算两个整数之间的最大值 并且返回最大值
///
/// 第一个数
/// 第二个数
/// 返回的最大值
public static int GetMax(int n1, int n2)//形参
{
int max = n1 > n2 ? n1 : n2;
return max;
}
}
}
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _11_方法练习
{
class Program
{
static void Main(string[] args)
{
//计算两个整数之间的最大值
int max = Program.GetMax(1, 3);
Console.WriteLine(max);
// Array.Sort()
// int n = Convert.ToInt32("123");
string str = Console.ReadLine();
Console.ReadKey();
}
///
/// 计算两个整数之间的最大值并且将最大值返回
///
/// 第一个整数
/// 第二个整数
/// 将最大值返回
public static int GetMax(int n1, int n2)
{
return n1 > n2 ? n1 : n2;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _05方法练习
{
class Program
{
static void Main(string[] args)
{
//1 读取输入的整数
//多次调用(如果用户输入的是数字,则返回,否则提示用户重新输入)
Console.WriteLine("请输入一个数字");
string input = Console.ReadLine();
int number = GetNumber(input);
Console.WriteLine(number);
Console.ReadKey();
}
///
/// 这个方法需要判断用户的输入是否是数字
/// 如果是数字,则返回
/// 如果不是数字,提示用户重新输入
///
public static int GetNumber(string s)
{
while (true)
{
try
{
int number = Convert.ToInt32(s);
return number;
}
catch
{
Console.WriteLine("请重新输入");
s = Console.ReadLine();
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _06方法的3个练习
{
class Program
{
static void Main(string[] args)
{
//2 还记得学循环时做的那道题吗?只允许用户输入y或n,请改成方法
//这个方法做了什么事儿?
//只能让用户输入yes或者no,只要不是,就重新输入
//输入yes 看 输入no 不能看
//Console.WriteLine("请输入yes或者no");
//string str = Console.ReadLine();
//string result = IsYerOrNo(str);
//Console.WriteLine(result);
//Console.ReadKey();
//4计算输入数组的和:int Sum(int[] values)
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int sum = GetSum(nums);
Console.WriteLine(sum);
Console.ReadKey();
}
///
/// 计算一个整数类型数组的总和
///
/// 要求总和的数组
/// 返回这个数组的总和
public static int GetSum(int[] nums)
{
int sum = 0;
for (int i = 0; i < nums.Length; i++)
{
sum += nums[i];
}
return sum;
}
///
/// 限定用户只能输入yes或者no 并且返回
///
/// 用户的输入
/// 返回yes或者no
public static string IsYerOrNo(string input)
{
while (true)
{
if (input == "yes" || input == "no")
{
return input;
}
else
{
Console.WriteLine("只能输入yes或者no,请重新输入");
input = Console.ReadLine();
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _02方法的调用问题
{
class Program
{
//字段 属于类的字段
public static int _number = 10;
static void Main(string[] args)
{
// int b = 10;
int a = 3;
int res = Test(a);
Console.WriteLine(res);
// Console.WriteLine(_number);
Console.ReadKey();
}
public static int Test(int a)
{
a = a + 5;
return a;
// Console.WriteLine(_number);
}
public static void TestTwo()
{
// Console.WriteLine(_number);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _03判断闰年
{
class Program
{
static void Main(string[] args)
{
//举例:写一个方法,判断一个年份是否是润年.
bool b = IsRun(2000);
Console.WriteLine(b);
Console.ReadKey();
}
///
/// 判断给定的年份是否是闰年
///
/// 要判断的年份
/// 是否是闰年
public static bool IsRun(int year)
{
bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
return b;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _07out参数
{
class Program
{
static void Main(string[] args)
{
//写一个方法 求一个数组中的最大值、最小值、总和、平均值
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
将要返回的4个值,放到一个数组中返回
//int[] res = GetMaxMinSumAvg(numbers);
//Console.WriteLine("最大值是{0},最小值是{1},总和是{2},平均值是{3}", res[0], res[1], res[2], res[3]);
//Console.ReadKey();
int max1;
int min1;
int sum1;
int avg1;
bool b;
string s;
double d;
Test(numbers, out max1, out min1, out sum1, out avg1, out b, out s, out d);
Console.WriteLine(max1);
Console.WriteLine(min1);
Console.WriteLine(sum1);
Console.WriteLine(avg1);
Console.WriteLine(b);
Console.WriteLine(s);
Console.WriteLine(d);
Console.ReadKey();
}
///
/// 计算一个数组的最大值、最小值、总和、平均值
///
///
///
public static int[] GetMaxMinSumAvg(int[] nums)
{
int[] res = new int[4];
//假设 res[0] 最大值 res[1]最小值 res[2]总和 res[3]平均值
res[0] = nums[0];//max
res[1] = nums[0];//min
res[2] = 0;//sum
string name = "孙全";
bool b = true;
for (int i = 0; i < nums.Length; i++)
{
//如果当前循环到的元素比我假定的最大值还大
if (nums[i] > res[0])
{
//将当前循环到的元素赋值给我的最大值
res[0] = nums[i];
}
if (nums[i] < res[1])
{
res[1] = nums[i];
}
res[2] += nums[i];
}
//平均值
res[3] = res[2] / nums.Length;
return res;
}
///
/// 计算一个整数数组的最大值、最小值、平均值、总和
///
/// 要求值得数组
/// 多余返回的最大值
/// 多余返回的最小值
/// 多余返回的总和
/// 多余返回的平均值
public static void Test(int[] nums, out int max, out int min, out int sum, out int avg, out bool b, out string s, out double d)
{
//out参数要求在方法的内部必须为其赋值
max = nums[0];
min = nums[0];
sum = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] > max)
{
max = nums[i];
}
if (nums[i] < min)
{
min = nums[i];
}
sum += nums[i];
}
avg = sum / nums.Length;
b = true;
s = "123";
d = 3.13;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _08使用out参数做登陆
{
class Program
{
static void Main(string[] args)
{
//分别的提示用户输入用户名和密码
//你写一个方法来判断用户输入的是否正确
//返回给用户一个登陆结果,并且还要单独的返回给用户一个登陆信息
//如果用户名错误,除了返回登陆结果之外,还要返回一个 "用户名错误"
//“密码错误”
Console.WriteLine("请输入用户名");
string userName = Console.ReadLine();
Console.WriteLine("请输入密码");
string userPwd = Console.ReadLine();
string msg;
bool b = IsLogin(userName, userPwd, out msg);
Console.WriteLine("登陆结果{0}",b);
Console.WriteLine("登陆信息{0}",msg);
Console.ReadKey();
}
///
/// 判断登陆是否成功
///
/// 用户名
/// 密码
/// 多余返回的登陆信息
/// 返回登陆结果
public static bool IsLogin(string name, string pwd, out string msg)
{
if (name == "admin" && pwd == "888888")
{
msg = "登陆成功";
return true;
}
else if (name == "admin")
{
msg = "密码错误";
return false;
}
else if (pwd == "888888")
{
msg = "用户名错误";
return false;
}
else
{
msg = "未知错误";
return false;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _09自己动手写tryparse
{
class Program
{
static void Main(string[] args)
{
int num;
bool b = int.TryParse("123abc", out num);
Console.WriteLine(num);
Console.WriteLine(b);
Console.ReadKey();
}
public static bool MyTryParse(string s, out int result)
{
result = 0;
try
{
result = Convert.ToInt32(s);
return true;
}
catch
{
return false;
}
}
}
}
七、ref参数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _10ref参数
{
class Program
{
static void Main(string[] args)
{
double salary = 5000;
JiangJin(ref salary);
Console.WriteLine(salary);
Console.ReadKey();
}
public static void JiangJin(ref double s)
{
s += 500;
}
public static void FaKuan(double s)
{
s -= 500;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _11_ref练习
{
class Program
{
static void Main(string[] args)
{
//使用方法来交换两个int类型的变量
int n1 = 10;
int n2 = 20;
//int temp = n1;
//n1 = n2;
//n2 = temp;
Test(ref n1, ref n2);
Console.WriteLine(n1);
Console.WriteLine(n2);
Console.ReadKey();
//n1 = n1 - n2;//-10 20
//n2 = n1 + n2;//-10 10
//n1 = n2 - n1;//20 10
}
public static void Test(ref int n1, ref int n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
}
}
八、params可变参数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _12params可变参数
{
class Program
{
static void Main(string[] args)
{
// int[] s = { 99, 88, 77 };
//Test("张三",99,100,100,100);
//Console.ReadKey();
//求任意长度数组的和 整数类型的
int[] nums = { 1, 2, 3, 4, 5 };
int sum = GetSum(8,9);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int GetSum(params int[] n)
{
int sum = 0;
for (int i = 0; i < n.Length; i++)
{
sum += n[i];
}
return sum;
}
public static void Test(string name, int id, params int[] score)
{
int sum = 0;
for (int i = 0; i < score.Length; i++)
{
sum += score[i];
}
Console.WriteLine("{0}这次考试的总成绩是{1},学号是{2}", name, sum, id);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _13_方法的重载
{
class Program
{
static void Main(string[] args)
{
// M()
Console.WriteLine(1);
Console.WriteLine(1.4);
Console.WriteLine(true);
Console.WriteLine('c');
Console.WriteLine("123");
Console.WriteLine(5000m);
Console.ReadKey();
}
public static void M(int n1, int n2)
{
int result = n1 + n2;
}
//public static int M(int a1, int a2)
//{
// return a1 + a2;
//}
public static double M(double d1, double d2)
{
return d1 + d2;
}
public static void M(int n1, int n2, int n3)
{
int result = n1 + n2 + n3;
}
public static string M(string s1, string s2)
{
return s1 + s2;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _14_方法的递归
{
class Program
{
static void Main(string[] args)
{
TellStory();
Console.ReadKey();
}
public static int i = 0;
public static void TellStory()
{
//int i = 0;
Console.WriteLine("从前有座山");
Console.WriteLine("山里有座庙");
Console.WriteLine("庙里有个老和尚和小和尚");
Console.WriteLine("有一天,小和尚哭了,老和尚给小和尚讲了一个故事");
i++;
if (i >= 10)
{
return;
}
Console.WriteLine(i);
TellStory();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _15方法练习
{
class Program
{
static void Main(string[] args)
{
// 提示用户输入两个数字 计算这两个数字之间所有整数的和
//1、用户只能输入数字
//2、计算两个数字之间和
//3、要求第一个数字必须比第二个数字小 就重新输入
Console.WriteLine("请输入第一个数字");
string strNumberOne = Console.ReadLine();
int numberOne = GetNumber(strNumberOne);
Console.WriteLine("请输入第二个数字");
string strNumberTwo = Console.ReadLine();
int numberTwo = GetNumber(strNumberTwo);
//判断第一个数字是否小于第二个数字
JudgeNumber(ref numberOne, ref numberTwo);
//求和
int sum = GetSum(numberOne, numberTwo);
Console.WriteLine(sum);
Console.ReadKey();
}
public static void JudgeNumber(ref int n1, ref int n2)
{
while (true)
{
if (n1 < n2)
{
//复合题意
return;
}
else//>=2
{
Console.WriteLine("第一个数字不能大于或者等于第二个数字,请重新输入第一个数字");
string s1 = Console.ReadLine();
//调用GetNumber
n1 = GetNumber(s1);
Console.WriteLine("请重新输入第二个数字");
string s2 = Console.ReadLine();
n2 = GetNumber(s2);
}
}
}
public static int GetNumber(string s)
{
while (true)
{
try
{
int number = Convert.ToInt32(s);
return number;
}
catch
{
Console.WriteLine("输入有误!!!请重新输入");
s = Console.ReadLine();
}
}
}
public static int GetSum(int n1, int n2)
{
int sum = 0;
for (int i = n1; i <= n2; i++)
{
sum += i;
}
return sum;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _01方法的练习
{
class Program
{
static void Main(string[] args)
{
//79、用方法来实现:有一个字符串数组:
//{ "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" },请输出最
//string[] names = { "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" };
//string max = GetLongest(names);
//Console.WriteLine(max);
//Console.ReadKey();
// 80、用方法来实现:请计算出一个整型数组的平均值。保留两位小数
//int[] numbers = { 1, 2, 7 };
//double avg = GetAvg(numbers);
//保留两位小数
//string s = avg.ToString("0.00");
//avg = Convert.ToDouble(s);
//Console.WriteLine(avg);
//Console.WriteLine(s);
//Console.WriteLine("{0:0.00}", avg);
//Console.WriteLine(avg);
//double d = 3.148;
//Console.WriteLine(d.ToString("0.00"));
// Console.WriteLine("{0:0.00}",d);
//1、写一个方法,用来判断用户输入的数字是不是质数
//再写一个方法 要求用户只能输入数字 输入有误就一直让用户输入
while (true)
{
Console.WriteLine("请输入一个数字,我们将判断你输入的数字是否是质数");
string strNumber = Console.ReadLine();
int number = GetNumber(strNumber);
bool b = IsPrime(number);
Console.WriteLine(b);
Console.ReadKey();
}
}
public static bool IsPrime(int number)
{
if (number < 2)
{
return false;
}
else//>=2
{
//让这个数字从2开始除 除到自身的前一位
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
//给非质数准备的
return false;
}
//else
//{
// return true;
//}
}
//给质数准备的
return true;
}
}
public static int GetNumber(string strNumber)
{
while (true)
{
try
{
int number = Convert.ToInt32(strNumber);
return number;
}
catch
{
Console.WriteLine("请重新输入");
strNumber = Console.ReadLine();
}
}
}
public static double GetAvg(int[] nums)
{
double sum = 0;
for (int i = 0; i < nums.Length; i++)
{
sum += nums[i];
}
return sum / nums.Length;
}
///
///求一个字符串数组中最长的元素
///
///
///
public static string GetLongest(string[] s)
{
string max = s[0];
for (int i = 0; i < s.Length; i++)
{
if (s[i].Length > max.Length)
{
max = s[i];
}
}
return max;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _02方法的练习
{
class Programe
{
static void Main(string[] args)
{
//95、接受输入后判断其等级并显示出来。
//判断依据如下:等级={优 (90~100分);良 (80~89分)
//Console.WriteLine("请输入考试成绩");
//int score = Convert.ToInt32(Console.ReadLine());
//string level = GetLevel(score);
//Console.WriteLine(level);
//Console.ReadKey();
//97、请将字符串数组{ "中国", "美国", "巴西", "澳大利亚", "加拿大" }中的内容反转
//string[] names = { "中国", "美国", "巴西", "澳大利亚", "加拿大" };
//Test(names);
//for (int i = 0; i < names.Length; i++)
//{
// Console.WriteLine(names[i]);
//}
//Console.ReadKey();
//98写一个方法 计算圆的面积和周长 面积是 pI*R*R 周长是 2*Pi*r
double r = 5;
double perimeter;
double area;
GetPerimeterArea(r, out perimeter, out area);
Console.WriteLine(perimeter);
Console.WriteLine(area);
Console.ReadKey();
}
public static void GetPerimeterArea(double r, out double perimeter,out double area)
{
perimeter = 2 * 3.14 * r;
area = 3.14 * r * r;
}
public static void Test(string[] names)
{
for (int i = 0; i < names.Length / 2; i++)
{
string temp = names[i];
names[i] = names[names.Length - 1 - i];
names[names.Length - 1 - i] = temp;
}
}
public static string GetLevel(int score)
{
string level = "";
switch (score / 10)
{
case 10:
case 9: level = "优"; break;
case 8: level = "良"; break;
case 7: level = "中"; break;
case 6: level = "差"; break;
default: level = "不及格";
break;
}
return level;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _03方法的练习
{
class Program
{
static void Main(string[] args)
{
//100、计算任意多个数间的最大值(提示:params)。
//int sum = GetSum(1, 2, 3, 4, 5, 6, 7);
//Console.WriteLine(sum);
//Console.ReadKey();
//101、请通过冒泡排序法对整数数组{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }实现升序排序。
//int[] nums = { 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 };
//Change(nums);
//for (int i = 0; i < nums.Length; i++)
//{
// Console.WriteLine(nums[i]);
//}
//Console.ReadKey();
//102将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世”(用方法来实现此功能)
string[] names = { "梅西", "卡卡", "郑大世" };
string str = ProcessString(names);
Console.WriteLine(str);
Console.ReadKey();
//"梅西|卡卡|郑大世"
}
public static string ProcessString(string[] names)
{
string str = null;
for (int i = 0; i < names.Length-1; i++)
{
str += names[i] + "|";
}
return str + names[names.Length - 1];
}
public static void Change(int[] nums)
{
for (int i = 0; i < nums.Length-1; i++)
{
for (int j = 0; j < nums.Length-1-i; j++)
{
if (nums[j] > nums[j + 1])
{
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
}
public static int GetSum(params int[] nums)
{
int sum = 0;
for (int i = 0; i < nums.Length; i++)
{
sum += nums[i];
}
return sum;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _04飞行棋游戏
{
class Program
{
//我们用静态字段来模拟全局变量
static int[] Maps = new int[100];
//声明一个静态数组用来存储玩家A跟玩家B的坐标
static int[] PlayerPos = new int[2];
//存储两个玩家的姓名
static string[] PlayerNames = new string[2];
//两个玩家的标记
static bool[] Flags = new bool[2];//Flags[0]默认是false Flags[1]默认也是false
static void Main(string[] args)
{
GameShow();
#region 输入玩家姓名
Console.WriteLine("请输入玩家A的姓名");
PlayerNames[0] = Console.ReadLine();
while (PlayerNames[0] == "")
{
Console.WriteLine("玩家A的姓名不能为空,请重新输入");
PlayerNames[0] = Console.ReadLine();
}
Console.WriteLine("请输入玩家B的姓名");
PlayerNames[1] = Console.ReadLine();
while (PlayerNames[1]==""||PlayerNames[1]==PlayerNames[0])
{
if (PlayerNames[1] == "")
{
Console.WriteLine("玩家B的姓名不能为空,请重新输入");
PlayerNames[1] = Console.ReadLine();
}
else
{
Console.WriteLine("玩家B的姓名不能玩家A的形同,请重新输入");
PlayerNames[1] = Console.ReadLine();
}
}
#endregion
//玩家姓名输入OK之后 我们首先应该清屏
Console.Clear();//清屏
GameShow();
Console.WriteLine("{0}的士兵用A表示",PlayerNames[0]);
Console.WriteLine("{0}的士兵用B表示",PlayerNames[1]);
//在画地图之前 首先应该初始化地图
InitailMap();
DrawMap();
//当玩家A跟玩家B没有一个人在终点的时候 两个玩家不停的去玩游戏
while (PlayerPos[0] < 99 && PlayerPos[1] < 99)
{
if (Flags[0] == false)
{
PlayGame(0);//Flags[0]=true;
}
else
{
Flags[0] = false;
}
if (PlayerPos[0] >= 99)
{
Console.WriteLine("玩家{0}无耻的赢了玩家{1}",PlayerNames[0],PlayerNames[1]);
break;
}
if (Flags[1] == false)
{
PlayGame(1);
}
else
{
Flags[1] = false;
}
if (PlayerPos[1] >= 99)
{
Console.WriteLine("玩家{0}无耻的赢了玩家{1}",PlayerNames[1],PlayerNames[0]);
break;
}
}//while
Win();
Console.ReadKey();
}
///
/// 胜利
///
public static void Win()
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(" ◆ ");
Console.WriteLine(" ■ ◆ ■ ■");
Console.WriteLine(" ■■■■ ■ ■ ◆■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■ ■ ◆ ■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■■■■■■ ■■■■■■■ ■ ■ ■");
Console.WriteLine(" ■■■■ ■ ■ ●■● ■ ■ ■");
Console.WriteLine(" ■ ■ ■ ● ■ ● ■ ■ ■");
Console.WriteLine(" ■ ■ ■■■■■■ ● ■ ● ■ ■ ■");
Console.WriteLine(" ■■■■ ■ ● ■ ■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■ ■ ■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■ ■ ■ ■ ");
Console.WriteLine(" ■ ■ ■ ■ ● ■ ");
Console.WriteLine(" ■ ■■ ■■■■■■ ■ ● ●");
Console.ResetColor();
}
///
/// 画游戏头
///
public static void GameShow()
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("**************************");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("**************************");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("**************************");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("***0505.Net基础班飞行棋***");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("**************************");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("**************************");
}
///
/// 初始化地图
///
public static void InitailMap()
{
int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎
for (int i = 0; i < luckyturn.Length; i++)
{
//int index = luckyturn[i];
Maps[luckyturn[i]] = 1;
}
int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
for (int i = 0; i < landMine.Length; i++)
{
Maps[landMine[i]] = 2;
}
int[] pause = { 9, 27, 60, 93,2,3,4,7,8 };//暂停▲
for (int i = 0; i < pause.Length; i++)
{
Maps[pause[i]] = 3;
}
int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐
for (int i = 0; i < timeTunnel.Length; i++)
{
Maps[timeTunnel[i]] = 4;
}
}
public static void DrawMap()
{
Console.WriteLine("图例:幸运轮盘:◎ 地雷:☆ 暂停:▲ 时空隧道:卐");
#region 第一横行
for (int i = 0; i < 30; i++)
{
Console.Write(DrawStringMap(i));
}//for
#endregion
//画完第一横行后 应该换行
Console.WriteLine();
#region 第一竖行
for (int i = 30; i < 35; i++)
{
for (int j = 0; j <= 28; j++)
{
Console.Write(" ");
}
Console.Write(DrawStringMap(i));
Console.WriteLine();
}
#endregion
#region 第二横行
for (int i = 64; i >= 35; i--)
{
Console.Write(DrawStringMap(i));
}
#endregion
//画完第二横行 应该换行
Console.WriteLine();
#region 第二竖行
for (int i = 65; i <= 69; i++)
{
Console.WriteLine(DrawStringMap(i));
}
#endregion
#region 第三横行
for (int i = 70; i <= 99; i++)
{
Console.Write(DrawStringMap(i));
}
#endregion
//画完最后一行 应该换行
Console.WriteLine();
}//DrawMap方法的结尾
///
/// 从画地图的方法中抽象出来的一个方法
///
///
///
public static string DrawStringMap(int i)
{
string str = "";
#region 画图
//如果玩家A跟玩家B的坐标相同,并且都在这个地图上,画一个尖括号
if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i)
{
str = "<>";
}
else if (PlayerPos[0] == i)
{
//shift+空格
str = "A";
}
else if (PlayerPos[1] == i)
{
str = "B";
}
else
{
switch (Maps[i])
{
case 0:
Console.ForegroundColor = ConsoleColor.Yellow;
str = "□";
break;
case 1:
Console.ForegroundColor = ConsoleColor.Green;
str = "◎";
break;
case 2:
Console.ForegroundColor = ConsoleColor.Red;
str = "☆";
break;
case 3:
Console.ForegroundColor = ConsoleColor.Blue;
str = "▲";
break;
case 4:
Console.ForegroundColor = ConsoleColor.DarkCyan;
str = "卐";
break;
}//switch
}//else
return str;
#endregion
}
///
/// 玩游戏
///
public static void PlayGame(int playerNumber)
{
Random r = new Random();
int rNumber = r.Next(1, 7);
Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[playerNumber]);
Console.ReadKey(true);
Console.WriteLine("{0}掷出了{1}", PlayerNames[playerNumber],rNumber);
PlayerPos[playerNumber] += rNumber;
ChangePos();
Console.ReadKey(true);
Console.WriteLine("{0}按任意键开始行动", PlayerNames[playerNumber]);
Console.ReadKey(true);
Console.WriteLine("{0}行动完了", PlayerNames[playerNumber]);
Console.ReadKey(true);
//玩家A有可能踩到了玩家B 方块 幸运轮盘 地雷 暂停 时空隧道
if (PlayerPos[playerNumber] == PlayerPos[1 - playerNumber])
{
Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[1 - playerNumber]);
PlayerPos[1 - playerNumber] -= 6;
ChangePos();
Console.ReadKey(true);
}
else//踩到了关卡
{
//玩家的坐标
switch (Maps[PlayerPos[playerNumber]])// 0 1 2 3 4
{
case 0: Console.WriteLine("玩家{0}踩到了方块,安全。", PlayerNames[playerNumber]);
Console.ReadKey(true);
break;
case 1: Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择 1--交换位置 2--轰炸对方", PlayerNames[playerNumber]);
string input = Console.ReadLine();
while (true)
{
if (input == "1")
{
Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]);
Console.ReadKey(true);
int temp = PlayerPos[playerNumber];
PlayerPos[playerNumber] = PlayerPos[1 - playerNumber];
PlayerPos[1 - playerNumber] = temp;
Console.WriteLine("交换完成!!!按任意键继续游戏!!!");
Console.ReadKey(true);
break;
}
else if (input == "2")
{
Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[1 - playerNumber]);
Console.ReadKey(true);
PlayerPos[1 - playerNumber] -= 6;
ChangePos();
Console.WriteLine("玩家{0}退了6格", PlayerNames[1 - playerNumber]);
Console.ReadKey(true);
break;
}
else
{
Console.WriteLine("只能输入1或者2 1--交换位置 2--轰炸对方");
input = Console.ReadLine();
}
}
break;
case 2: Console.WriteLine("玩家{0}踩到了地雷,退6格", PlayerNames[playerNumber]);
Console.ReadKey(true);
PlayerPos[playerNumber] -= 6;
ChangePos();
break;
case 3: Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[playerNumber]);
Flags[playerNumber] = true;
Console.ReadKey(true);
break;
case 4: Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[playerNumber]);
PlayerPos[playerNumber] += 10;
ChangePos();
Console.ReadKey(true);
break;
}//switch
}//else
ChangePos();//perfect
Console.Clear();
DrawMap();
}
///
/// 当玩家坐标发生改变的时候调用
///
public static void ChangePos()
{
if (PlayerPos[0] < 0)
{
PlayerPos[0] = 0;
}
if (PlayerPos[0] >= 99)
{
PlayerPos[0] = 99;
}
if (PlayerPos[1] < 0)
{
PlayerPos[1] = 0;
}
if (PlayerPos[1] >= 99)
{
PlayerPos[1] = 99;
}
}
}
}