0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 2
1

Ребята,можно ли этот код перевести на чистый си(Код смешан с си++)

28.03.2017, 15:09. Показов 1184. Ответов 1
Метки нет (Все метки)

Задача:
4 балла:
Разработать игровое поле для змейки. Продумать способ хранения змейки, управления с помощью стрелок. Отобразить змейку и дать возможность управлять ей.

6 баллов:
Добавить проверку столкновения змейки со стеной и самой собой. В этом случае игра завершается и отображается количество набранных очков.

8 баллов:
Добавить появление фруктов (проверить, чтобы они появлялись только в свободных ячейках). После каждого столкновения змейки с фруктом начисляются очки и увеличивается длинна змейки на 1.

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

Сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
bool gameOver;
const int weight = 20;
const int height = 20;
int x, y, fruitX, fruitY, score;
int tailX[100], tailY[100];
int nTail;
enum eDirecton { STOP = 0, LEFT, RIGHT, UP, DOWN };
eDirecton dir;
void Setup()
{
    gameOver = false;
    dir = STOP;
    x = weight / 2;
    y = height / 2;
    fruitX = rand() % weight;
    fruitY = rand() % height;
    score = 0;
}
void Draw()
{
    system("cls");
    for (int i = 0; i < weight + 2; i++)
        cout << "#";
    cout << endl;
 
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < weight; j++)
        {
            if (j == 0)
                cout << "#";
            if (i == y && j == x)
                cout << "O";
            else if (i == fruitY && j == fruitX)
                cout << "F";
            else
            {
                bool print = false;
                for (int k = 0; k < nTail; k++)
                {
                    if (tailX[k] == j && tailY[k] == i)
                    {
                        cout << "o";
                        print = true;
                    }
                }
                if (!print)
                    cout << " ";
            }
 
 
            if (j == weight - 1)
                cout << "#";
        }
        cout << endl;
    }
 
    for (int i = 0; i < weight + 2; i++)
        cout << "#";
    cout << endl;
    cout << "Score:" << score << endl;
}
void Input()
{
    if (_kbhit())
    {
        switch (_getch())
        {
        case 'a':
            dir = LEFT;
            break;
        case 'd':
            dir = RIGHT;
            break;
        case 'w':
            dir = UP;
            break;
        case 's':
            dir = DOWN;
            break;
        case 'x':
            gameOver = true;
            break;
        }
    }
}
void Logic()
{
    int prevX = tailX[0];
    int prevY = tailY[0];
    int prev2X, prev2Y;
    tailX[0] = x;
    tailY[0] = y;
    for (int i = 1; i < nTail; i++)
    {
        prev2X = tailX[i];
        prev2Y = tailY[i];
        tailX[i] = prevX;
        tailY[i] = prevY;
        prevX = prev2X;
        prevY = prev2Y;
    }
    switch (dir)
    {
    case LEFT:
        x--;
        break;
    case RIGHT:
        x++;
        break;
    case UP:
        y--;
        break;
    case DOWN:
        y++;
        break;
    default:
        break;
    }
    if (x >= weight) x = 0; else if (x < 0) x = weight - 1;
    if (y >= height) y = 0; else if (y < 0) y = height - 1;
 
    for (int i = 0; i < nTail; i++)
        if (tailX[i] == x && tailY[i] == y)
            gameOver = true;
 
    if (x == fruitX && y == fruitY)
    {
        score += 10;
        fruitX = rand() % weight;
        fruitY = rand() % height;
        nTail++;
    }
}
void main(){
    system("color E");
    Setup();
    while (!gameOver)
    {
        Draw();
        Input();
        Logic();
        Sleep(13);
    }
    cin.get(); cin.get();
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2017, 15:09
Ответы с готовыми решениями:

Можно ли перевести этот код с Pascal на C#?
program pr387; const n = 10; var m : array of real; a : array of real; i, j :...

Как можно перевести этот код с паскаля в с++?
uses crt; const n=10; var a:array of integer; i,j,p,k:byte; begin...

Как можно перевести этот код с паскаля в с++?
program razbienie_mnozhestwa(input,output); var i,j,k,n:byte;wper:arrayof boolean;...

Перевести код из C++ в чистый Си
Из-за наличия специфики плюсов (векторы, классы, operator) вообще не удаётся интерпретировать...

1
20 / 20 / 8
Регистрация: 15.10.2015
Сообщений: 83
28.03.2017, 15:57 2
вместо cin и cout напиши стандартные функции printf, scanf, puts
И всё, прога на Си

Добавлено через 25 секунд
ну и библиотеки тогда другие нужны
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2017, 15:57
Помогаю со студенческими работами здесь

Дан код программы на C++, перевести этот код на C
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;string.h&gt; using namespace std; ...

Как перевести этот код на код Delphi
uses crt; const nmax=100; var a:arrayof integer; n,i,k,j,x:integer; begin clrscr;...

Нашел код в интернете. Можно ли этот код из С++ преобразовать в язык программирования C#?
Нашел код в интернете можно ли этот код из С++ преобразовать в язык программирования C#. Язык...

Можно ли, и если можно то как перевести код SQL в код С#
КОД ПРОГРАММЫ void __fastcall TForm1::SKChange(TObject *Sender) //Выбор таблицы { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru