Имитационное моделирование средствами языка С++
Автор: Zekkaa • Апрель 12, 2022 • Лабораторная работа • 507 Слов (3 Страниц) • 227 Просмотры
ОТЧЕТ
ПО ЛАБОРАТОРНОЙ РАБОТЕ №2
«Имитационное моделирование средствами языка С++»
по курсу «Объектно-ориентированное программирование»
Вариант 5
Выполнил: студент группы ПИ-20б
______________Боднарчук А.
(подпись) «___» _______2021г.
Принял: ассистент
________________Грищенко Д.А.
(подпись) «___» _______2021г.
2021 г.
Условие
Автомат Калашникова.
Автомат имеет спусковой механизм (курок) и рычаг переключения «одиночный выстрел» «автоматическая стрельба». При нажатии на курок в зависимости от рычага переключения автомат выстреливает:
1 пулю при «одиночный выстрел»;
5 пуль при «автоматическая стрельба».
Если обойма пуста, то стрельба производится не может и необходимо сменить обойму. Ёмкость обоймы 30 патронов. Если в обойме осталось менее 5 патронов, то при «автоматической стрельбе» выстреливаются все остающиеся. Две обоймы заправлять одновременно нельзя. Начальное состояние: обойма полна т.е. 30 патронов и рычаг переключен в состояние «одиночный выстрел».
На языке СИ
/*Файл automat.h*/
enum lever { one_b, auto_b };
enum clip{full, empty};
enum fuse { on, off };
class automaton
{
lever curr_lever;
clip curr_clip;
fuse curr_fuse;
int cartridges;
int time;
void change_lever();
void push_trigger();
void recharge();
void recharge_ready();
void change_fuse();
public:
automaton();
void Run();
};
/*Файл method.cpp*/
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream>
#include "automat.h"
using namespace std;
automaton::automaton()
{
curr_clip = full;
cartridges = 30;
curr_lever = one_b;
time = -1;
curr_fuse = on;
}
void menu()
{
cout << "\n1-Сменить положение предохранителя(На предохранители/Снять с предохранителя).";
cout << "\n2-Сменить положение рычага переключения(Одиночный выстрел/Автоматическая стрельба).";
cout << "\n3-Нажать на спусковой курок.";
cout << "\n4-Перезарядить автомат.";
cout << "\nESC-Выход из программы.";
cout << "\nВаш выбор:";
}
void automaton::Run()
{
int key;
do
{
while (time > 0)
{
cout << "\nДо конца перезарядки осталось: " << time << " секунд!";
time--;
Sleep(100);
}
if (time == 0)
recharge_ready();
menu();
key = getch();
switch (key)
{
case '1':
cout << " Сменить положение предохранителя!";
change_fuse();
break;
case '2':
...