49907

Игра “Восемь ферзей”

Курсовая

Информатика, кибернетика и программирование

В результате выполнения указанной процедуры получим следующий словарь предметной области: Поле для игры в шахматы TField €œАтрибуты Координата Х Координата Y Цвет клетки Ферзи Действия нарисоваться Pint€...

Русский

2014-01-12

86 KB

4 чел.

Министерство образования Российской Федерации

Владимирский государственный университет

Кафедра Информатики и Вычислительной Техники

 Пояснительная записка к курсовой  

работе

Игра “Восемь ферзей”

                        Выполнила: студентка группы ИВТ-398

     Левина И.Н.

           Принял:  доцент Дубов И.Р.

 Владимир 2000

АННОТАЦИЯ

Курсовая работа по дисциплине Технология Программирования включает в себя данный отчет (описание, рисунки и исходные тексты программ (приведены в приложении)),  игры “Восемь ферзей”.

Краткое описание задачи: требуется разработать электронное поле для расстановки восьми ферзей, которые будут стоять так, чтобы  ни один ферзь не был под ударом другого ферзя. Передвижение фигур осуществляется с клавиатуры посредством курсора.

Атака ферзей реализована в соответствии с правилами игры в шахматы. Чтобы ферзи не были подвержены атаке, они не должны стоять в одной горизонтали, вертикали и диагонали. Ферзи, находящиеся под ударом других ферзей отмечены красным цветом, те которые не подвержены атаке – зеленым.  Игра заканчивается  после того, как пользователь расставит всех ферзей на места, где они будут в безопасности. В программе  предусмотрена возможность возврата ходов на произвольную глубину, с помощью клавиши – Х, а также их повторное выполнение, с помощью клавиши – Z.  

На примере было разобрано тестирование, с помощью которого можно подсчитать количество атак, которым подвержены ферзи со стороны других ферзей.   На этапе тестирования ошибок обнаружено не было.

                                  ЛИСТ ЗАДАНИЯ

                                     Вариант 15

                                “Восемь ферзей”

Имеется шахматная доска. Пользователь выставляет на нее восемь ферзей. Пользователю выдаются сообщения о двух ситуациях: хотя бы один из ферзей оказывается под ударом других ферзей, ни один ферзь не находиться под ударом других ферзей. Ферзи, находящиеся под ударом, и ферзи не находящиеся под ударом, должны быть показаны различными цветами. При помощи курсора пользователь перемещает ферзей по полю. Два ферзя не могут быть расположены на одном поле. Должна быть предусмотрена возможность возврата ходов на произвольную глубину и их повторного выполнения.


             Разработка программной системы: игра “Восемь ферзей”

1. Системный анализ_______________________________________

1.1. Составление словаря предметной области______________

1.2. Техническое задание________________________________

1.2.1. Функции системы____________________________

1.2.2. Эксплуатационные требования_________________

1.2.3. Ограничения на процесс разработки____________

2. Проектирование________________________________________

2.1. Идентефикация классов и объектов___________________

2.2. Идентефикация содержания классов и

       связей между классами  и  объектами__________________

2.3. Реализация классов и объектов_______________________

3. Программирование______________________________________

4. Тестирование___________________________________________

4.1. Спецификация тестируемого метода___________________

4.2. Тесты_______________________________________________

  1.  Заключение._____________________________________________

Приложение 1. Диаграммы классов  и объектов________________

Приложение 2. Тексты программы «Восемь ферзей»_________

Приложение 3. Текст программы-драйвера__________________

Список используемой литературы___________________________


1.СИСТЕМНЫЙ АНАЛИЗ

1.1.Составление словаря предметной области

Составим словарь предметной области и идентифицируем классы и объекты, разделив факты для каждого объекта на три группы: “атрибуты”, “поведение” и “сообщения другим объектам”. Под группой “атрибуты” будем понимать перечень абстракций сущностей данного объекта. В группу “поведение” добавим действия, которые можно сформулировать как “сделать что-то” с данным объектом, при этом будем оговаривать, какие атрибуты изменяются. В группу “сообщения другим объектам” включим те действия, которые описывают взаимодействие данного объекта с другими объектами.

В результате выполнения указанной процедуры, получим следующий     словарь предметной области:

Поле для игры в шахматы (TField)

                      “Атрибуты

                       Координата Х

                       Координата Y

                       Цвет клетки

                       Ферзи

                       “Действия

                        нарисоваться (Paint)”     

Ферзи (TQueen)

                      “Атрибуты

                       Координата Х

                       Координата Y

                       Координата NewX

                       Координата NewY

                       Цвет

 Количество поражений

  Указатель на массив всех ферзей

 Указатель на поле

Графические координаты ферзя

Количество фигур на поле

                      “Действия

 Нарисоваться (Paint)

 Установить координаты (SetCoords)

 Переместить (MoveTo)

 Проверка на атаки

Проверка на атаки для всех фигур на поле”

Ходы, сделанные пользователем (TMoves)

                      “Атрибуты

                       Координата откуда переместили fx

 Координата откуда переместили fy

 Координата куда переместили fx

 Координата куда переместили fy

 Указатель на следующий ход

 Указатель на предыдущий ход

К полученному словарю предметной области следует сделать                    следующие замечания.

Курсор может передвигаться по доске влево ,вправо ,вверх или вниз, в зависимости от управления. Посредством нескольких проверок программа  не допускает выход курсора за пределы доски. Выбор ферзя осуществляется подведением в его клетку курсора и  последующим нажатием  ввода.         

Выбранную  ферзя будем выделять инвертированием,  для отмены выбора ферзя необходимо нажать  клавишу  ENTER на клетке, на которой находится выделение.

    Игровое поле  является замкнутой системой.

Для решаемой задачи важным является отображение объектов на  экране.  За координаты поля примем координаты его левого нижнего угла, а координаты фигуры индексируются относительно клеток поля.  Цвета моделируемых объектов будут определяться  посредством следующих  стандартных констант:

LIGHTGRAY – светло-серый

 BLUE – синий

 YELLOW – желтый

 LIGHTRED - светло-красный

 LIGHTGREEN – светло-зеленый

BLACK -  черный

 BROWN - коричневый

     Т.к. при появлении на экране доска занимает определенное положение, то при  определении переменной класса Tfield  в конструктор передаются координаты поля.

     

                            1.2. Техническое задание

Результатом системного анализа является техническое задание на проектирование, составленное с использованием словаря предметной области и сопровождаемое диаграммой классов (рис. 1.), диаграммой объектов (рис.2.),обобщенными алгоритмами абстракций поведения. Техническое задание содержит следующие требования.

                                               1.2.1. Функции системы

  •  управление игрой осуществляется при помощи команд, подаваемых с клавиатуры: движение курсора по доске осуществляется клавишами курсора; выбор ферзя и выбор клетки в которую перемешается этот ферзь осуществляется с помощью клавиши Enter. Атаки ферзей  осуществляются в соответствии с правилами игры в шахматы. Контроль правильности сделанного  хода возложим на  основную программу.

                                          1.2.2 Эксплуатационные требования

технические требования – ПЭВМ IBM PC;

операционная система – MSDOS;

игра управляется одним пользователем.

                                  1.2.3 Ограничения на процесс разработки

срок выполнения игры – до 29.05.00.

   

                               2.ПРОЕКТИРОВАНИЕ

2.1.Идентефикация классов и объектов

Т.к. классы и объекты, полученные на этапе системного анализа, не являются классами и объектами программной системы, сконструируем на их основе соответствующие классы и объекты, которые составят логическую модель именно программной системы. Оставив прежние названия модельных классов, дополним их абстракции сущностей и поведений, ориентируя их на программные механизмы.

В начальный момент на экране отображается первоначальная расстановка ферзей на игральном поле и ожидается выбор фигуры пользователем.

Основная программа расставляет ферзи на главной диагонали.

Проектируемая система должна обеспечивать отображение моделируемых объектов в виде графических фигур на экране дисплея. В связи с этим возникает необходимость  осуществления передвижения  объектов игры по экрану (по игральному полю). Для чего введем  класс Tmoves, который представляет собой двунаправленный динамический список ходов, сделанных пользователем. Цвет клетки, на которой стоит фигура сохраняется в объекте класса  TField, в   массиве F. Массив F заполняется в момент создания объекта класса Tfield. Отрисовка и стирание фигуры с экрана осуществляется одним методом – Paint(action), где action  принимает значения констант, определенных в файле mtypes.cpp: faSet, faClear, которые определяют отрисовку и стирание фигуры соответственно.   

Проверка на правильность хода ферзя и осуществление ввода с клавиатуры расширенного  и обычного кода клавиши осуществляется главной программой.

2.2. Идентификация содержания классов и связей между классами и объектами

Класс TQueen. Графические объекты в целом характеризуются своим положением на экране и основным цветом, поэтому атрибутами класса TQueen являются точки Х  и Y местоположения фигуры. Графический объект при создании не может сразу располагаться в каком-то месте, поэтому для каждой фигуры в главной программе вызывается метод SetCoords. При моделировании передвижения фигур требуется  их стирать и перерисовывать, поэтому введем соответствующий метод Paint. Этот класс содержит описание методов необходимых для реализации передвижения ферзя по доске.

 Класс  TField. Атрибутами этого класса являются содержащиеся в нем объекты – фигуры. Для класса TField  необходим  соответствующий конструктор , осуществляющий  начальное позиционирование поля.

Класс Tmoves. Ходы, введенные пользователем, сохраняются в двунаправленном списке, каждый элемент которого является объектом класса Tmoves.  Ходы пользователя сохраняются в переменных fx, fy (откуда была перемещена фигура) и переменных tx, ty ( куда была перемещена фигура). А также атрибуты Next и Prev, которые необходимы для создания самого двунаправленного списка.

2.3.Реализация классов и объектов

Все разработанные классы и выявленные объекты должны быть включены в проект.

Каждый класс описан в своем модуле, и все эти модули должны быть подключены к главной программе. Кроме того, для графического изображения простейших фигур необходимо использовать стандартный модуль графики Graphics.

3.ПРОГРАММИРОВАНИЕ

Программирование выполнено на языке C++, что соответствует общим требованиям к курсовой работе. Основу для программирования составляют диаграммы и спецификации этапа проектирования .Необходимые детали разъясняются комментариями в тексте программы

4.ТЕСТИРОВАНИЕ

Все необходимые проверки на правильность ходов и  на корректность ввода пользователя, выполнены либо в классах, либо в главной программе. Поэтому в качестве тестируемого метода я выбрала метод TQueens:: Recheck.

4.1. Спецификация тестируемого метода

Имя:Recheck;

Назначение: Подсчет количества атак данной фигуры другими фигурами;

Аргументы: int blows  (количества атак данной фигуры другими фигурами)

Действия: функция производит пересчет количества атак данной фигуры другими фигурами.

                       5. Заключение

В заключении хотелось бы отметить, что данная программа не является совершенной.   Несомненно ей не хватает более удобного и гибкого интерфейса с пользователем и более красочного оформления.

 Приложение 2

 Приложение 2.

Файл mtypes.cpp.

const kbEnter    = 13;  // коды нажатых клавиш: "Ввод"

const kbUpKey    = 72;  // стрелка вверх

const kbDownKey    = 80;  // стрелка вниз

const kbLeftKey    = 75;  // стрелка влево

const kbRightKey   = 77;  // стрелка вправо

const kbEscape    = 27;  // "Escape" - выход

// множество констант действий для TQueen::Paint()

enum TQueenAction {faSet, faClear};

// классы, см. отдельно каждый файл:

class TQueen; // Queen.cpp      

class TField;  // field.cpp      

class TMoves;  // moves.cpp                              

Файл Queen.cpp.

//#include <conio.h>       

//#include <alloc.h>       

class TQueen {                      

private:       

 TQueen *allQueens;               

                                    

 TField  *paintField;               

                                    

 int     queen[2];                

public:       

 int blows;                          

 int color;                        

 int x,y;                           

 int newx, newy;             

 int Fcount;                 

 TFigure(TQueen *iQueens, TField *iField, int iFc) : x(-1), y(-1), blows(0),

             allQueens(iQueens), paintField(iField), Fcount(iFc)

   { color=LIGHTGREEN; }             

 ~TFigure() { }                      

 void Paint( TQueenAction action );

 void SetCoords(int ix, int iy);     

 void MoveTo(int ix, int iy);        

 void CheckFields();                 

 int  Recheck();                    

};

void TQueen::Paint( TQueenAction action )

{        

setlinestyle(SOLID_LINE, 0, 1);

if (action==faClear && paintField->queens[x][y]) {  

  if (paintField->f[x][y]==1)setcolor(LIGHTGRAY);

  if (paintField->f[x][y]!=1)setcolor(BLUE);

  if (paintField->f[x][y]==1)setfillstyle(SOLID_FILL,LIGHTGRAY);

  if (paintField->f[x][y]!=1)setfillstyle(SOLID_FILL,BLUE);

  fillellipse(paintField->x[x][y]+25,paintField->y[x][y]+25,22,22);             

  paintField->Queens[x][y]=0;      

  return;

}

if (newx>-1 && newy>-1) { x=newx; y=newy; newx=-1; newy=-1; }

for (int i=0; i<2; i++) {

    queen[0]=10+paintField->x[x][y];

    queen[1]=-10+paintField->y[x][y];

}

setcolor(0);

setfillstyle(SOLID_FILL, color);

fillellipse(queen[0],queen[1],22,22);

setcolor(15);

paintField->queens[x][y]=this;        

TQueen *z=allQueens;                 

for (i=0; i<Fcount; i++, z++)              

  if (z->Recheck()) z->Paint(faSet);   

};

int TQueen::Recheck() {

 int t=blows;            

 blows=0;

 CheckFields();

if (blows) color=LIGHTRED; else color=LIGHTGREEN;

 if (blows!=t) return 1; else return 0;  

}

void TQueen::SetCoords(int ix, int iy) {    

if (x<0 || y<0) { x=newx=ix; y=newy=iy; } else MoveTo(ix, iy);

}

void TQueen::MoveTo(int ix, int iy) {

if (!allQueens) return;

if (ix<-1 || iy<-1 || ix>7 || iy>7) return;

Paint(faClear);

newx=ix; newy=iy;

Paint(faSet);

};

void TQueen::CheckFields() {  

int i, d1, d2;

TQueen *z={allQueens};

for (i=0; i<Fcount; i++) {        

  if (!z) return;

d1=y-x; d2=y+x;

if (z!=this && z->x>-1 && z->y>-1)  

    if (x==z->x || y==z->y || z->y==d1+z->x || z->y==d2-z->x)

      blows++;

       z++;  }

}

Файл moves.cpp.

class TMoves {

public:

 int fx, fy, tx, ty;

 TMoves *next, *prev;

 TMoves(int ifx, int ify, int itx, int ity, TMoves *Head) :

           fx(ifx), fy(ify), tx(itx), ty(ity), next(0), prev(0) {

           if (!Head) return;

next=Head;

Head->prev=this;

};

 ~TMoves() { };       

};

Файл field.cpp.

//#include <conio.h>   

//#include <iostream.h>   

#include <graphics.h>   

#include "mtypes.cpp"   

class TField {

private:   

public:   

int x[9][9];

int y[9][9];

int f[8][8];

TQueen *queens[8][8];

TField(int ix, int iy);

void Paint();

};   

 

TField::TField(int ix, int iy)   

{   

for (int i=0; i<9; i++)  

for (int j=0; j<9; j++) {   

 x[i][j]=i*50+ix;

 y[i][j]=480-(50*j+iy);

if (i<8 && j<8) queens[i][ j]=0;

}   

}   

void TField::Paint()   

{   

int t=1;   

for (int i=0; i<8; i++) {

for (int j=0; j<8; j++) {   

if (t==1)setfillstyle(SOLID_FILL,LIGHTGRAY);

if (t!=1)setfillstyle(SOLID_FILL,BLUE); 

bar(x[i][j], y[i][j], x[i+1][j+1], y[i+1][j+1]);

f[i][j]=t;   

t=1-t;  

}   

t=1-t;  

}   

setlinestyle(SOLID_LINE, 0, 1);

setcolor(BROWN);   

rectangle(x[0][0]-1, y[0][0]+1,x[8][8]+1, y[8][8]-1);

};   

Файл  main.cpp.    

#include "moves.cpp"  

#include "field.cpp"  

#include "queens.cpp"  

#include <conio.h>   

#include <stdio.h>

#include <graphics.h>  

void ClearSelection(TField *field, int x, int y) {

 if (field->f[x][y]==1)setcolor(LIGHTGRAY);  

 if (field->f[x][y]!=1)setcolor(BLUE);    

 setlinestyle(SOLID_LINE, 0, 3);

rectangle(field->x[x][y]+1, field->y[x][y]-1,

    field->x[x+1][y+1]-2, field->y[x+1][y+1]+2);

}   

void SetSelection(TField *field, int x, int y) {

 setlinestyle(SOLID_LINE, 0, 3);   

setcolor(YELLOW);   

rectangle(field->x[x][y]+1, field->y[x][y]-1,   

   field->x[x+1][y+1]-2, field->y[x+1][y+1]+2);  

}   

void main()   

{   

TField       field(119, 39);

TQueen      queens[8] = {TQueen(&queens[0], &field, 8),

                                          TQueen(&queens[0], &field, 8),

                                          TQueen(&queens[0], &field, 8),

                                          TQueen(&queens[0], &field, 8),

                                          TQueen(&queens[0], &field, 8),

                                          TQueen(&queens[0], &field, 8),

                                          TQueen(&queens[0], &field, 8),

                                          TQueen(&queens[0], &field, 8)};

int          i;

 TQueen      *z, *t;

 char       ch;

 int       x=3, y=3, dx=0, dy=0;

 int       selX=-1, selY=-1;

 TMoves       *moves=new TMoves(0, 0, 0, 0, 0);

{

 int        gm, err, gd = DETECT;

initgraph(&gd, &gm, "");

 err=graphresult();

 if (err!=grOk) {

  printf("%s\n", grapherrormsg(err));

  return;

 }

}

 

setcolor(LIGHTRED);

outtextxy(120, 450, "RED Queen - under attack");

setcolor(LIGHTGREEN);

outtextxy(375, 450, "GREEN Queen - free");

field.Paint();

 for (i=0; i<8; i++) Queens[i].SetCoords(i, i);

 for (i=0; i<8; i++) {       

 queens[i].Recheck();

 queens[i].Paint(faSet);

}

SetSelection(&field, x, y);

do {

  ch=getch();

  if (!ch) {              

    ch=getch();

switch (ch) {       

      case kbUpKey    : if (y<7) dy= 1; break;

      case kbDownKey  : if (y>0) dy=-1; break;

      case kbLeftKey  : if (x>0) dx=-1; break;

      case kbRightKey : if (x<7) dx= 1; break;

}

    if (!dx || !dy) {

    if (selX!=x || selY!=y) ClearSelection(&field, x, y);

      x+=dx; y+=dy;

      dx=0; dy=0;

   if (selX==x && selY==y)

     continue;

   SetSelection(&field, x, y);

}

    continue;

}

  if (ch==kbEnter) {

         if (selX==-1 && selY==-1) {

              if (field.queens[x][y]) { selX=x; selY=y; }

      continue;

}

    if (selX==x && selY==y) {

    selX=selY=-1;

continue;

}

    if (field.queens[x][y]) continue;

    r=field.figures[selX][selY];

if (moves)

   if (moves->prev) {

 TMoves *r,*p;

 r=p=moves->prev;

 while (p->prev) {

  p=p->prev;

  delete r;

r=p;

}

        delete p;

}  

      moves=new TMoves(r->x, r->y, x, y, moves);

      r->MoveTo(x, y);

      for (i=0; i<8; i++) queens[i].Recheck();

     ClearSelection(&field, selX, selY);

     selX=selY=-1;

     continue;

}  

  switch (ch) {

    case 'z' : if (!moves->prev) break;

 moves=moves->prev;

 r=field.queens[moves->fx][moves->fy];

 if (!r) break;

 r->MoveTo(moves->tx, moves->ty);

                             if (selX>-1 && selY>-1) {

   ClearSelection(&field, selX, selY);

   selX=selY=-1;

 }

 break;

    case 'x' : if (!moves->next) break;

 r=field.queens[moves->tx][moves->ty];

               if (!r) break;  

 r->MoveTo(moves->fx, moves->fy);

 if (selX>-1 && selY>-1) {

   ClearSelection(&field, selX, selY);

   selX=selY=-1;

 }

 moves=moves->next;

 break;

  }

} while (ch!=kbEscape);

{

  TMoves *r;

  while (moves->prev) moves=moves->prev;

  r=moves;

  while (moves->next) {

 moves=moves->next;

 delete r;

 r=moves;

  }

  delete moves;

}

closegraph(); // завершаем графику

}

 

Текст программы-драйвера.

#include "moves.cpp"       

#include "field.cpp"       

#include "queens.cpp"       

#include <conio.h>   

#include <stdio.h>   

#include <graphics.h>  

void main()       

{       

TField       field(119, 39);

 

TQueen     queens[3] = {TQueen(&queens[0], &field, 3),    

                                         TQueen(&queens[0], &field, 3),

             TQueen(&queens[0], &field, 3)};

{

 int        gm, err, gd = DETECT;

 initgraph(&gd, &gm, "");

 err=graphresult();

 if (err!=grOk) {

  printf("%s\n", grapherrormsg(err));

  return;

 }

}

field.Paint();

figures[0].SetCoords(2, 3);

figures[1].SetCoords(6, 7);

figures[2].SetCoords(4, 3);

for (int i=0; i<3; i++) {       

  figures[i].Recheck();

figures[i].Paint(faSet);

}

getch();

// вывод результатов

printf("Ожидаемые результаты:\n");

printf("  - для фигуры 1 : 2 атаки\n");

printf("  - для фигуры 2 : 1 атаки\n");

printf("  - для фигуры 3 : 1 атаки\n\n");

printf("Результаты работы программы:\n");

printf("  - для фигуры 1 : %d атаки\n", queens[0].blows);

printf("  - для фигуры 2 : %d атаки\n", queens[1].blows);

printf("  - для фигуры 3 : %d атаки\n", queens[2].blows);

getch(); // пауза

closegraph(); // завершим графику

}

                                        Список литературы

  1.  Методические указания к курсовой работе по дисциплине технология программирования. Составители: И.Р. Дубов, В.А. Барков, А.Г. Долинин.  Владимир:1999г
  2.  Липаев В.В. Проектирование программных средств. М.:Высш.шк.,1990.-303с.


 

А также другие работы, которые могут Вас заинтересовать

20577. Зовнішня політика УНР. Берестейській договір та його наслідки. У зовнішній політиці 26.5 KB
  Зовнішня політика УНР. У зовнішній політиці Директорії вдалося розширити міжнародні зв'язки УНР її визнали Угорщина Чехословаччина Голландія Італія. Не визнали УНР країни Антанти й відроджена Польща яка претендувала на Правобережну Україну. Не визнавши гетьманської адміністрації дипломати країн Антанти не збиралися визнавати й поновлену УНР.
20578. Гетьманський переворот. Павло Скоропадський. Гетьманський уряд та його політика 39 KB
  після того як держави Антанти навіть не відповіли на пропозицію про мирні переговори Раднарком Росії розпочав їх з Німеччиною та її союзниками. був прийнятий закон Про посольства 1 місії Української Держави. Основний акцент робився на професійній підготовці фаховому рівні принциповості та патріотизмі працівників зовнішньополітичного відомства Української Держави. Міністрами закордонних справ Української Держави гетьмана П.
20579. Доба Директорії УНР: її внутрішня і зовнішня політика 39 KB
  Доба Директорії УНР: її внутрішня і зовнішня політика Політичні помилки тяжке становище трудящих залежність від окупаційної влади поразка Німеччини та її союзників у війні стали причинами падіння гетьманської влади в листопаді 1918 року. Коновальця Директорія повела наступ на Київ і захопила його 14 грудня 1918 року Прийшовши до влади вона обіцяла знищити поміщицьке землеволодіння встановити трудову владу провести вибори до Конгресу трудового народу якому й належатиме влада. Винниченко на черговому з'їзді Української...
20580. Зх. Укр. землі в 1918 р. Утворення ЗУНР. Петрушевич 32 KB
  Утворення ЗУНР. Левицьким і виданий тимчасовий закон про державну самостійність українських земель колишньої АвстроУгорської імперії за яким усі вони входили до складу Західноукраїнської Народної Республіки ЗУНР. Уряд ЗУНР переїхав до Тернополя а пізніше до Станіславова. перша сесія Української Національної Ради у Станіславові проголосила об'єднання ЗУНР з УНР в єдину державу.
20581. Відновлення радянської влади в Україні в 1919р. Селянсько-повстанський рух. 1919 р 27.5 KB
  Згідно з декретом Тимчасового робітничоселянського уряду вона дістала назву Українська Соціалістична Радянська Республіка УСРР а сам уряд з переїздом до Харкова зазнав значних змін на чолі уряду за рекомендацією В. Юридичне оформлення радянської державності на теренах України відбулося 10 березня 1919 р коли III Всеукраїнський з'їзд рад Харків прийняв першу Конституцію УСРР. Центральним завданням цієї диктатури Основний Закон УСРР визначив здійснення переходу від буржуазного ладу до соціалізму після чого диктатура а слідом за...
20582. Утворення СРСР. Статус України в складі Радянського союзу 29.5 KB
  Утворення СРСР. Повернімося однак до періоду що передував створенню СРСР. 10 грудня на VII Всеукраїнському з'їзді Рад було схвалено Декларацію про утворення СРСР і проект основ Конституції СРСР. З'їзд звернувся до з'їздів Рад інших радянських республік з пропозицією невідкладно оформити створення СРСР.
20583. Перехід до нової економічної політики та її здійснення в Україні 38 KB
  Сюди на цей раз надовго повернулася радянськобільшовицька влада. Радянська влада жорстоко розправлялася з незадоволеними більшовицькою політикою. Але більшовицька влада не була б такою коли б вона дала змогу реалізувати цю політику в усіх її вимірах. Радянськобільшовицька влада поверталася до традиційно тоталітарних методів керівництва й управління.
20584. Політика українізації та коренізації: суть, причини, наслідки 28.5 KB
  Політика українізації та коренізації: суть причини наслідки. складовою частиною національнокультурних процесів в Україні була політика українізації що проводилася в роки НЕПу. Політика українізації була складовою частиною політики коренізацїі яку запровадило партійне керівництво на підставі рішень XII з'їзду РКПб квітень 1923 р. Для проведення українізації було створено комісію на чолі з секретарем ЦК КПбУ В.
20585. Проведення сталінської політики воєнного-комуністичного штурму в Україні: результати, наслідки 35.5 KB
  складовою частиною національнокультурних процесів в Україні була політика українізації що проводилася в роки НЕПу. Політика українізації була складовою частиною політики коренізацїі яку запровадило партійне керівництво на підставі рішень XII з'їзду РКПб квітень 1923 р. Для проведення українізації було створено комісію на чолі з секретарем ЦК КПбУ В. Українська Інтелігенція стала рушійною силою українізації.