Разработка программного продукта, реализующего классическую версию настольной игры "Морской бой"

Проектирование игры "Морской бой" путем составления диаграмм 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.