Разработка программного продукта, реализующего классическую версию настольной игры "Морской бой"
Проектирование игры "Морской бой" путем составления диаграмм UML, IDEF0, DFD, моделирующих требования к программе. Разработка программы с использованием языка C# и фреймворка.NETFramework 3.5. Тестирование белого ящика и альфа-тестирование продукта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 24.10.2013 |
Размер файла | 3,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
// (Controls[side + (n_1 + vert) + (n_2 + horiz)] as PictureBox).Tag = "5"; хззачемэтотутбыло
}
else if (act == 2)
{
switch (field[n_1 + vert, n_2 + horiz])
{
case 5:
case 8: field[n_1 + vert, n_2 + horiz] = 0; break;
case 7: field[n_1 + vert, n_2 + horiz] = 0; break;
case 9: field[n_1 + vert, n_2 + horiz] = 6; break;
}
}
else if (act == 3)
{
switch (field[n_1 + vert, n_2 + horiz])
{
case 5:
case 8: field[n_1 + vert, n_2 + horiz] = 0; break;
case 7: field[n_1 + vert, n_2 + horiz] = 0; break;
case 9: field[n_1 + vert, n_2 + horiz] = 6; break;
}
if (shp_all == 1) //если проверка на корректность установки прошла
{
if (i == 0)
{
switch (cur_stat)
{
case 4: { count4--; lbl1.Text = "x" + count4.ToString(); break; }
case 3: { count3--; lbl2.Text = "x" + count3.ToString(); break; }
case 2: { count2--; lbl3.Text = "x" + count2.ToString(); break; }
case 1: { count1--; lbl4.Text = "x" + count1.ToString(); break; }
}
if (count1 == 0 && count2 == 0 && count3 == 0 && count4 == 0)
btn_Battle.Visible = true;
if (side == "p_a_")
{
ships[ship_count_p] = new Ship(cur_stat);
ship_count_p++;
}
else if (side == "p_b_")
{
ships_e[ship_count_e] = new Ship(cur_stat);
ship_count_e++;
}
}
field[n_1 + vert, n_2 + horiz] = 1;
if (side == "p_a_")
{
ships[ship_count_p - 1].sq[i].x = n_1 + vert;
ships[ship_count_p - 1].sq[i].y = n_2 + horiz;
}
if (side == "p_b_")
{
ships_e[ship_count_e - 1].sq[i].x = n_1 + vert;
ships_e[ship_count_e - 1].sq[i].y = n_2 + horiz;
}
(Controls[side + (n_1 + vert) + (n_2 + horiz)] as PictureBox).Tag = "1";
if ((n_1 + 1 + vert) < 11)
if (field[n_1 + 1 + vert, n_2 + horiz] == 0)
field[n_1 + 1 + vert, n_2 + horiz] = 6; //низ
if ((n_2 + 1 + horiz) < 11)
if (field[n_1 + vert, n_2 + 1 + horiz] == 0)
field[n_1 + vert, n_2 + 1 + horiz] = 6; //право
if ((n_1 - 1 + vert) > 0)
if (field[n_1 - 1 + vert, n_2 + horiz] == 0)
field[n_1 - 1 + vert, n_2 + horiz] = 6; //верх
if ((n_2 - 1 + horiz) > 0)
if (field[n_1 + vert, n_2 - 1 + horiz] == 0)
field[n_1 + vert, n_2 - 1 + horiz] = 6; //лево
if ((n_2 - 1 + horiz) > 0 && (n_1 - 1 + vert) > 0)
if (field[n_1 - 1 + vert, n_2 - 1 + horiz] == 0)
field[n_1 - 1 + vert, n_2 - 1 + horiz] = 6; //лево-верх
if ((n_2 - 1 + horiz) > 0 && (n_1 + 1 + vert) < 11)
if (field[n_1 + 1 + vert, n_2 - 1 + horiz] == 0)
field[n_1 + 1 + vert, n_2 - 1 + horiz] = 6; //лево-низ
if ((n_2 + 1 + horiz) < 11 && (n_1 - 1 + vert) > 0)
if (field[n_1 - 1 + vert, n_2 + 1 + horiz] == 0)
field[n_1 - 1 + vert, n_2 + 1 + horiz] = 6; //право-верх
if ((n_2 + 1 + horiz) < 11 && (n_1 + 1 + vert) < 11)
if (field[n_1 + 1 + vert, n_2 + 1 + horiz] == 0)
field[n_1 + 1 + vert, n_2 + 1 + horiz] = 6; //право-низ
}
}
}
// if (act == 3 && shp_all == 1) { cur_stat = 0; ship_count++; };
}
public void generate_field(int x, int y, string side)
{
int i, j, min_dist = 19;
for (i = 1; i < 11; i++)
{
for (j = 1; j < 11; j++)
{
pictureBox[i, j] = new PictureBox();
pictureBox[i, j].Name = side + j + i;
pictureBox[i, j].Image = Properties.Resources.dot2;
pictureBox[i, j].Location = new Point(min_dist * (i - 1) + x, min_dist * (j - 1) + y);
pictureBox[i, j].Size = new Size(20, 20);
//pictureBox[i, j].Tag = String.Format("{0} {1}", j, i);
pictureBox[i, j].Tag = "0";
pictureBox[i, j].BringToFront();
pictureBox[i, j].Click += new EventHandler(click);
pictureBox[i, j].MouseEnter += new EventHandler(mas_MouseMove);
pictureBox[i, j].MouseLeave += new EventHandler(mas_MouseLeave);
this.Controls.Add(pictureBox[i, j]);
glow_player.SendToBack();
glow_enemy.SendToBack();
}
}
} //генерацияполя
public void check_dot(PictureBox pic, Ship shp) //проверкаклетки
{
string dot_name = pic.Name.Remove(0, 4); //обрезкавименичасти p_x_
string side = pic.Name.Remove(4, pic.Name.Length - 4);
int[,] field = new int[11, 11];
int n_1, n_2;
if (side == "p_a_")
field = field_player;
else if (side == "p_b_")
field = field_enemy;
n_1 = get_coord(pic)[0];
n_2 = get_coord(pic)[1];
for (int i = 0; i < shp.get_n(); i++)
{
if (pic.Name == side + shp.sq[i].x.ToString() + shp.sq[i].y.ToString())
{
shp.sq[i].stat = 0;
field[shp.sq[i].x, shp.sq[i].y] = 3;
pic.Tag = "3";
field_enemy = shp.ship_check(field_enemy);
draw_field("p_b_");
check_win();
break;
}
else
if (pic.Tag.ToString() == "0")
{
pic.Tag = 2;
field[n_1, n_2] = 2;
draw_field("p_b_");
turn();
}
}
}
public void statistic_edit(int side, int diff) //side 1 - игрок, 2 - ИИ
{
int[] stat = new int[6];
StreamReader sr = new StreamReader("stat");
for (int i = 0; i < 6; i++)
stat[i] = Convert.ToInt32(sr.ReadLine());
sr.Close();
switch (diff)
{
case 1:
if (side == 1)
stat[0]++;
else
stat[1]++;
break;
case 2:
if (side == 1)
stat[2]++;
else
stat[3]++;
break;
case 3:
if (side == 1)
stat[4]++;
else
stat[5]++;
break;
}
StreamWriter sw = new StreamWriter("stat");
for (int i = 0; i < 6; i++)
sw.WriteLine(stat[i]);
sw.Close();
}
publicvoidcheck_win() //проверканапобеду
{
int victory=1;
for (int i = 0; i < ship_count_e; i++)
if (ships_e[i].destr == 0)
victory = 0;
if (victory == 1)
{
statistic_edit(1, difficult);
DialogResult result = MessageBox.Show("Вывыиграли! Хотитесыгратьещёраз?", "Победа!", MessageBoxButtons.YesNo);
if (result == System.Windows.Forms.DialogResult.Yes)
{
Application.Restart();
Environment.Exit(0);
}
else
Environment.Exit(0);
}
victory = 1;
for (int i = 0; i < ship_count_p; i++)
if (ships[i].destr == 0)
victory = 0;
if (victory == 1)
{
statistic_edit(0, difficult);
DialogResult result = MessageBox.Show("Выпроиграли. Хотитесыгратьещёраз?", "Поражение", MessageBoxButtons.YesNo);
if (result == System.Windows.Forms.DialogResult.Yes)
{
Application.Restart();
Environment.Exit(0);
}
else
Environment.Exit(0);
}
}
private void btn_Battle_Click(object sender, EventArgs e)
{
int i;
btn_Battle.Visible = false;
pic_reset.Visible = false;
pic_auto.Visible = false;
// pic_x.Visible = true;
// pic_dualshock.Visible = true;
for (i = 1; i <= 7; i++)
Controls["pic_ship" + i].Visible = false;
for (i = 1; i <= 4; i++)
Controls["lbl" + i].Visible = false;
generate_field(400, 115, "p_b_");
auto_set("p_b_");
draw_field("p_b_");
glow_enemy.Visible = true;
glow_player.Visible = true;
your_field.Visible = true;
en_field.Visible = true;
}
void click(object sender, EventArgs e) //кликпополю
{
if (sender is PictureBox)
{
if (cur_stat != 0) //есливыбранкорабль
move_ship(field_player, sender as PictureBox, 3, "p_a_");
else
{
int n_1, n_2;
n_1 = get_coord(sender as PictureBox)[0];
n_2 = get_coord(sender as PictureBox)[1];
if (!ArtInt.get_turn())
if ((sender as PictureBox).Name.Remove(4, (sender as PictureBox).Name.Length - 4) == "p_b_" && field_enemy[n_1,n_2]!=2)
{
for (int i = 0; i < ship_count_e; i++)
check_dot(sender as PictureBox, ships_e[i]);
draw_field("p_b_");
}
}
}
cur_stat = 0;
draw_field("p_a_");
}
private void SeaBattle_Load(object sender, EventArgs e)
{
btn_Battle.MouseEnter += (a_sender, a_args) =>
{
PictureBox pic = a_sender as PictureBox;
pic.Image = Properties.Resources.btn_Battle_1;
};
btn_Battle.MouseLeave += (a_sender, a_args) =>
{
PictureBox pic = a_sender as PictureBox;
pic.Image = Properties.Resources.btn_Battle_pressed;
};
if (!System.IO.File.Exists("stat"))
{
StreamWriter sw = File.CreateText("stat");
for (int i = 0; i < 6; i++)
sw.WriteLine("0");
sw.Close();
}
pic_ship7.MouseDown += new MouseEventHandler(MouseDown_ship);
pic_ship6.MouseDown += new MouseEventHandler(MouseDown_ship);
pic_ship5.MouseDown += new MouseEventHandler(MouseDown_ship);
pic_ship4.MouseDown += new MouseEventHandler(MouseDown_ship);
pic_ship3.MouseDown += new MouseEventHandler(MouseDown_ship);
pic_ship2.MouseDown += new MouseEventHandler(MouseDown_ship);
pic_ship1.MouseDown += new MouseEventHandler(MouseDown_ship);
pic_reset.MouseEnter += new EventHandler(mouse_e);
pic_reset.MouseLeave += new EventHandler(mouse_l);
pic_auto.MouseEnter += new EventHandler(mouse_e);
pic_auto.MouseLeave += new EventHandler(mouse_l);
pic_easy.MouseEnter += new EventHandler(mouse_enter_diff);
pic_easy.MouseLeave += new EventHandler(mouse_leave_diff);
pic_easy.Click += new EventHandler(mouse_click_diff);
pic_normal.MouseEnter += new EventHandler(mouse_enter_diff);
pic_normal.MouseLeave += new EventHandler(mouse_leave_diff);
pic_normal.Click += new EventHandler(mouse_click_diff);
pic_hard.MouseEnter += new EventHandler(mouse_enter_diff);
pic_hard.MouseLeave += new EventHandler(mouse_leave_diff);
pic_hard.Click += new EventHandler(mouse_click_diff);
pic_statistic.MouseEnter += new EventHandler(mouse_enter_stat);
pic_statistic.MouseLeave += new EventHandler(mouse_leave_stat);
pic_statistic.Click += new EventHandler(mouse_click_stat);
}
private void mas_MouseMove(object sender, EventArgs e) //наведениенаклетку
{
int n_1, n_2;
string name = (sender as PictureBox).Name.Remove(4, (sender as PictureBox).Name.Length - 4);
n_1 = get_coord(sender as PictureBox)[0];
n_2 = get_coord(sender as PictureBox)[1];
if ((sender as PictureBox).Tag.ToString() == "0" || (name == "p_b_") && (sender as PictureBox).Tag.ToString() == "1")
{
if (cur_stat != 0)
{
move_ship(field_player, sender as PictureBox, 1, "p_a_");
draw_field("p_a_");
}
else try
{
if ((name == "p_a_" && field_player[n_1, n_2] != 2) || (name == "p_b_" && field_enemy[n_1, n_2] != 2))
(sender as PictureBox).Image = Properties.Resources.dot_target;
}
catch { };
}
}
private void mas_MouseLeave(object sender, EventArgs e)
{
int n_1, n_2;
string name = (sender as PictureBox).Name.Remove(4, (sender as PictureBox).Name.Length - 4);
n_1 = get_coord(sender as PictureBox)[0];
n_2 = get_coord(sender as PictureBox)[1];
move_ship(field_player, sender as PictureBox, 2, "p_a_");
if ((sender as PictureBox).Tag.ToString() == "0" || (name == "p_b_") && (sender as PictureBox).Tag.ToString() == "1")
if ((name == "p_a_" && field_player[n_1, n_2] != 2) || (name == "p_b_" && field_enemy[n_1, n_2] != 2))
(sender as PictureBox).Image = Properties.Resources.dot2;
} //выходизклетки
private void MouseDown_ship(object sender, EventArgs e) //кликпоиконкамкораблей
{
switch ((sender as PictureBox).Name.ToString())
{
case "pic_ship1": if (count1 > 0) { cur_stat = 1; dir = 1; } break;
case "pic_ship2": if (count2 > 0) { cur_stat = 2; dir = 1; } break;
case "pic_ship3": if (count3 > 0) { cur_stat = 3; dir = 1; } break;
case "pic_ship4": if (count4 > 0) { cur_stat = 4; dir = 1; } break;
case "pic_ship5": if (count4 > 0) { cur_stat = 4; dir = 2; } break;
case "pic_ship6": if (count3 > 0) { cur_stat = 3; dir = 2; } break;
case "pic_ship7": if (count2 > 0) { cur_stat = 2; dir = 2; } break;
default: break;
}
}
private void mouse_e(object sender, EventArgs e)
{
switch ((sender as PictureBox).Name.ToString())
{
case "pic_reset": (sender as PictureBox).Image = Properties.Resources.btn_Reset2; break;
case "pic_auto": (sender as PictureBox).Image = Properties.Resources.btn_auto2; break;
}
}
private void mouse_l(object sender, EventArgs e)
{
switch ((sender as PictureBox).Name.ToString())
{
case "pic_reset": (sender as PictureBox).Image = Properties.Resources.btn_Reset; break;
case "pic_auto": (sender as PictureBox).Image = Properties.Resources.btn_auto; break;
}
}
private void pic_reset_Click(object sender, EventArgs e)
{
int i, j;
lbl1.Text = "x1";
lbl2.Text = "x2";
lbl3.Text = "x3";
lbl4.Text = "x4";
for (i = 1; i < 11; i++)
for (j = 1; j < 11; j++)
{
(Controls["p_a_" + i + j] as PictureBox).Tag = 0;
field_player[i, j] = 0;
}
count4 = 1;
count3 = 2;
count2 = 3;
count1 = 4;
ship_count_p = 0;
draw_field("p_a_");
btn_Battle.Visible = false;
}
private void pic_auto_Click(object sender, EventArgs e)
{
pic_reset_Click(sender, e);
while (count1 != 0 || count2 != 0 || count3 != 0 || count4 != 0)
{
pic_reset_Click(sender, e);
auto_set("p_a_");
}
draw_field("p_a_");
}
private void mouse_enter_diff(object sender, EventArgs e)
{
switch ((sender as PictureBox).Name.ToString())
{
case "pic_easy": (sender as PictureBox).Image = Properties.Resources.btn_easy_2; break;
case "pic_normal": (sender as PictureBox).Image = Properties.Resources.btn_normal_2; break;
case "pic_hard": (sender as PictureBox).Image = Properties.Resources.btn_hard_2; break;
}
} //наведениенакнопкууровнясложности
private void mouse_leave_diff(object sender, EventArgs e)
{
switch ((sender as PictureBox).Name.ToString())
{
case "pic_easy": (sender as PictureBox).Image = Properties.Resources.btn_easy; break;
case "pic_normal": (sender as PictureBox).Image = Properties.Resources.btn_normal; break;
case "pic_hard": (sender as PictureBox).Image = Properties.Resources.btn_hard; break;
}
} //выходизкнопкиуровнясложности
private void mouse_click_diff(object sender, EventArgs e) //нажатиенакнопкууровнясложности
{
pic_easy.Visible = false;
pic_normal.Visible = false;
pic_hard.Visible = false;
pic_reset.Visible = true;
pic_auto.Visible = true;
pic_chooseDiff.Visible = false;
generate_field(30, 115, "p_a_");
for (int i = 1; i <= 7; i++)
Controls["pic_ship" + i].Visible = true;
for (int i = 1; i <= 4; i++)
Controls["lbl" + i].Visible = true;
switch ((sender as PictureBox).Name.ToString())
{
case "pic_easy": difficult = 1; break;
case "pic_normal": difficult = 2; break;
case "pic_hard": difficult = 3; break;
}
}
private void mouse_enter_stat(object sender, EventArgs e)
{
(sender as PictureBox).Image = Properties.Resources.btn_statistic2;
}
private void mouse_leave_stat(object sender, EventArgs e)
{
(sender as PictureBox).Image = Properties.Resources.btn_statistic;
}
private void mouse_click_stat(object sender, EventArgs e)
{
FrmStat.ShowDialog();
}
}
}
AI.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SeaBattle
{
public class AI
{
public int last_x;
public int last_y;
public int dir; //0 - none, 1 - horiz, 2 - vert
public int destr_in_proc; //идёт уничтожение корабля (для установки координат первого попадания)
public bool hit = false; //идётуничтожениекорабля
bool turn = false; //ходИИ
public int miss_count=0; //счётчикпромаховдлясложногоуровня
public AI()
{
last_x = 0;
last_y = 0;
dir = 0;
destr_in_proc = 0;
hit = false;
}
public void set_turn(bool n)
{
turn = n;
}
public void set_last(int x, int y)
{
last_x = x;
last_y = y;
}
public bool get_turn()
{
return turn;
}
public int[] select_dot_1(int[,] field)
{
int[] coord = new int[2];
int x1, y1;
Random rnd = new Random();
turn = true;
do
{
x1 = rnd.Next(1, 11); //x
y1 = rnd.Next(1, 11); //y
} while ((field[x1, y1] == 2 || field[x1, y1] == 3 || field[x1, y1] == 4));
coord[0] = x1;
coord[1] = y1;
return coord;
}
public int[] select_dot_2_3(int[,] field, int diff)
{
int[] coord = new int[2];
int x1, y1;
Random rnd = new Random();
turn = true;
if (hit == false)
{
if (diff == 2)
{
do
{
x1 = rnd.Next(1, 11); //x
y1 = rnd.Next(1, 11); //y
} while ((field[x1, y1] == 2 || field[x1, y1] == 3 || field[x1, y1] == 4));
coord[0] = x1;
coord[1] = y1;
return coord;
}
else
{
if (miss_count < 2)
{
do
{
x1 = rnd.Next(1, 11); //x
y1 = rnd.Next(1, 11); //y
} while ((field[x1, y1] == 2 || field[x1, y1] == 3 || field[x1, y1] == 4));
miss_count++;
}
else
{
do
{
x1 = rnd.Next(1, 11); //x
y1 = rnd.Next(1, 11); //y
} while (field[x1, y1] != 1);
miss_count = 0;
}
coord[0] = x1;
coord[1] = y1;
return coord;
}
}
else
{
switch (dir)
{
case 0:
{
do
{
x1 = rnd.Next(-1, 2);
if (x1 == 0)
{
y1 = rnd.Next(-1, 2);
if ((last_x + x1 < 11) && (last_y + y1 < 11) && field[last_x + x1, last_y + y1] == 1)
dir = 2;
}
else
{
y1 = 0;
if ((last_x + x1<11) && (last_y + y1<11) && field[last_x + x1, last_y + y1] == 1)
dir = 1;
}
coord[0] = last_x + x1;
coord[1] = last_y + y1;
} while (coord[0] > 10 || coord[0] < 0 || coord[1] > 10 || coord[1] < 0 || field[coord[0], coord[1]] == 2 || field[coord[0], coord[1]] == 3 || field[coord[0], coord[1]] == 4);
break;
}
case 1:
{ //корабль установлен вертикально
do
{
int i=1;
while (!((last_x + i < 11 && field[last_x + i, last_y] == 1) || (last_x - i > 0 && field[last_x - i, last_y] == 1)))
i++;
do
{
if (rnd.Next(0, 2) == 1)
x1 = i;
else x1 = -i;
} while ((last_x + x1) < 0 || (last_x + x1) > 10 || field[last_x + x1, last_y] != 1);
coord[0] = last_x + x1;
coord[1] = last_y;
} while (coord[0] > 10 || coord[0] < 0 || field[coord[0], coord[1]] == 2 || field[coord[0], coord[1]] == 3 || field[coord[0], coord[1]] == 4);
break;
}
case 2:
{ //корабль установлен горизонтально
do
{
int i = 1;
while (!((last_y + i < 11 && field[last_x, last_y + i] == 1) || (last_y - i > 0 && field[last_x, last_y - i] == 1)))
i++;
do
{
if (rnd.Next(0, 2) == 1)
y1 = i;
else y1 = -i;
} while ((last_y + y1) < 0 || (last_y + y1) > 10 || field[last_x, last_y + y1] != 1);
coord[0] = last_x;
coord[1] = last_y + y1;
} while (coord[1] > 10 || coord[1] < 0 || field[coord[0], coord[1]] == 2 || field[coord[0], coord[1]] == 3 || field[coord[0], coord[1]] == 4);
break;
}
}
return coord;
}
}
}
}
Ships.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SeaBattle
{
public class Ship
{
public struct squares_stat
{
public int x;
public int y;
public int stat;
}
public squares_stat[] sq = new squares_stat[4];
private int n;
public int destr;
public Ship(int n)
{
this.n = n;
this.destr = 0;
for (int i = 0; i < n; i++)
sq[i].stat = 1;
}
public int get_n()
{
return n;
}
public int[,] ship_check(int[,] field)
{
int destroyed=1;
for (int i = 0; i < n; i++)
if (sq[i].stat == 1)
destroyed = 0;
if (destroyed == 1)
{
for (int i = 0; i < n; i++)
{
field[sq[i].x, sq[i].y] = 4;
if ((sq[i].x + 1) < 11 && field[sq[i].x + 1, sq[i].y] == 6) //низ
field[sq[i].x + 1, sq[i].y] = 2;
if ((sq[i].x - 1) > 0 && field[sq[i].x - 1, sq[i].y] == 6) //верх
field[sq[i].x - 1, sq[i].y] = 2;
if ((sq[i].y + 1) < 11 && field[sq[i].x, sq[i].y + 1] == 6) //право
field[sq[i].x, sq[i].y + 1] = 2;
if ((sq[i].y - 1) > 0 && field[sq[i].x, sq[i].y - 1] == 6) //лево
field[sq[i].x, sq[i].y - 1] = 2;
if ((sq[i].x + 1) < 11 && (sq[i].y + 1) < 11 && field[sq[i].x + 1, sq[i].y + 1] == 6) //низ-право
field[sq[i].x + 1, sq[i].y + 1] = 2;
if ((sq[i].x + 1) < 11 && (sq[i].y - 1) > 0 && field[sq[i].x + 1, sq[i].y - 1] == 6) //низ-лево
field[sq[i].x + 1, sq[i].y - 1] = 2;
if ((sq[i].x - 1) > 0 && (sq[i].y + 1) < 11 && field[sq[i].x - 1, sq[i].y + 1] == 6) //верх-право
field[sq[i].x - 1, sq[i].y + 1] = 2;
if ((sq[i].x - 1) > 0 && (sq[i].y - 1) > 0 && field[sq[i].x - 1, sq[i].y - 1] == 6) //верх-лево
field[sq[i].x - 1, sq[i].y - 1] = 2;
}
destr = 1;
}
return field;
}
}
}
FormStatistic.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace SeaBattle
{
public partial class FormStatistic : Form
{
public FormStatistic()
{
InitializeComponent();
}
private void FormStatistic_Load(object sender, EventArgs e)
{
lbl_diff.Text = "";
lbl_result.Text = "";
}
public void show_result(int button)
{
int[] stat = new int[6];
StreamReader sr = new StreamReader("stat");
for (int i = 0; i < 6; i++)
stat[i] = Convert.ToInt32(sr.ReadLine());
sr.Close();
switch (button)
{
case 1:
{
lbl_diff.Text = "Уровень сложности: лёгкий";
lbl_result.Text = "Победигрока: " + stat[0].ToString() + "\n";
lbl_result.Text += "ПобедИИ: " + stat[1].ToString() + "\n";
break;
}
case 2:
{
lbl_diff.Text = "Уровень сложности: средний";
lbl_result.Text = "Победигрока: " + stat[2].ToString() + "\n";
lbl_result.Text += "ПобедИИ: " + stat[3].ToString() + "\n";
break;
}
case 3:
{
lbl_diff.Text = "Уровень сложности: высокий";
lbl_result.Text = "Победигрока: " + stat[4].ToString() + "\n";
lbl_result.Text += "ПобедИИ: " + stat[5].ToString() + "\n";
break;
}
}
}
private void btn_easy_Click(object sender, EventArgs e)
{
show_result(1);
}
private void btn_medium_Click(object sender, EventArgs e)
{
show_result(2);
}
private void btn_hard_Click(object sender, EventArgs e)
{
show_result(3);
}
private void btn_reset_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter("stat");
for (int i = 0; i < 6; i++)
sw.WriteLine("0");
sw.Close();
show_result(1);
}
private void btn_exit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Размещено на Allbest.ru
Подобные документы
Основные требования к составу и параметрам технических средства. Верификация программного продукта. Расширение функционала программы и его реализация. Отладка и тестирование программного продукта. Тестирование программы в граничных и реальных условиях.
курсовая работа [1,3 M], добавлен 29.12.2014Приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта. Разработка кроссплатформенной компьютерной игры "Морской бой". Принципы "хорошего стиля программирования C++/Qt". Описание классов игры.
курсовая работа [2,7 M], добавлен 12.08.2014Описание правил игры "Морской бой". Особенности современных компьютеров и искусственного интеллекта. Создание общей блок-схемы программы, ее внешний вид. Необходимые переменные, процедуры и функции. Характеристика объектов, используемых в приложении.
курсовая работа [950,1 K], добавлен 05.11.2012Неразрешимость проблемы тестирования программного обеспечения. Виды и уровни тестирования. Стратегии восходящего и нисходящего тестирования. Методы "белого" и "черного" ящика. Автоматизированное и ручное тестирование. Разработка через тестирование.
курсовая работа [112,2 K], добавлен 22.03.2015Требования к создаваемому программному модулю. Разработка необходимых алгоритмов и интерфейсов. Описание протокола SPA-BUS. Выбор языка программирования. Тестирование и документирование программного продукта. Оценка экономической эффективности программы.
дипломная работа [722,4 K], добавлен 06.07.2012Анализ существующих решений для составления расписания репетитора. Разработка архитектуры программного продукта. Выбор инструментальных средств. Проектирование реляционной базы данных. Определение методики тестирования. Реализация интерфейса пользователя.
дипломная работа [411,7 K], добавлен 22.03.2018Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.
дипломная работа [1008,9 K], добавлен 13.10.2013Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
курсовая работа [2,7 M], добавлен 21.02.2011Архитектура программного продукта и требования к платформе, обоснование выбора разработки. Закономерности и основные этапы алгоритмизации и программирования, а также отладка и тестирование продукта. Разработка и содержание руководства пользователя.
дипломная работа [2,3 M], добавлен 19.01.2017Особенности визуальной среды программирования Microsoft Visual Studio 2015 Enterprise. Средства объектно-ориентированного программирования. Этапы проектирования программного комплекса. Отладка и тестирование программы игры "Виселица".
курсовая работа [2,4 M], добавлен 31.01.2016