Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
artemd55131
2 / 4 / 0
Регистрация: 26.06.2014
Сообщений: 61
#1

Загрузка информации из файла (система рекордов в игре "Змейка") - C++

27.06.2014, 02:52. Просмотров 777. Ответов 12
Метки нет (Все метки)

Не получается сделать считывание из файла и загрузки рекорда,помогите.Пытался сам,но всё запорол
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
#include <glut.h>
#include <iostream>
#include <time.h>
 
#include <windows.h>
using namespace std;
 
int score = 0;
int record = 0;
int N = 52,M = 25;
 
int Scale=25;
 
 
int w = Scale*N;
int h = Scale*M;
 
int dir,num=2;
 
struct 
{ int x;
  int y;}  s[100];
 
class Fructs
{ 
public:
    int x,y;
 
    void New()
    {  x=rand() % N;
        y=rand() % M;   }
    
    void DrawApple()
   {   glColor3f(0.0,1.0,0.0);
       glRectf(x*Scale,y*Scale,(x+1)*Scale,(y+1)*Scale); }
 
} m[10];
 
 void DrawSnake()
 {  
  glColor3f(0.0,0.0,1.5);
  for (int i=0;i<num;i++)
    {glRectf(s[i].x*Scale, s[i].y*Scale, (s[i].x+1.0)*Scale, (s[i].y+1.0)*Scale); }
 }
 
 void Tick()
 {
    for (int i=num;i>0;--i)
     {s[i].x=s[i-1].x;
     s[i].y=s[i-1].y;}
 
    if (dir==0) s[0].y+=1;      
    if (dir==1) s[0].x-=1;        
    if (dir==2) s[0].x+=1;         
    if (dir==3) s[0].y-=1;         
 
  for (int i=0;i<10;i++)
    if ((s[0].x==m[i].x) && (s[0].y==m[i].y)) 
      {num++; m[i].New();score++;}
    if(num ==2){score = 0;}
    
    if (s[0].x>N) {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
    if (s[0].x<0) {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  if (s[0].y>M)  {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
  if (s[0].y<0)  {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
 
 for (int i=1;i<num;i++)
     if (s[0].x==s[i].x && s[0].y==s[i].y)  num=i;
if (num >100){
    cout <<"you win!!!" <<endl;
    glutDestroyWindow(1);
    system("pause");
    }
 }
 
 
 
void DrawField()
  {
   glColor3f(0.0,0.7,0.0);
   glBegin(GL_LINES);
    for (int i=0; i<w; i+=Scale) 
      {glVertex2f(i,0); glVertex2f(i,h);}
    for (int j=0; j<h; j+=Scale)  
      {glVertex2f(0,j); glVertex2f(w,j);}
    glEnd();
}
 
 
void display() {
 
     glClear(GL_COLOR_BUFFER_BIT);
 
    DrawField();
 
    DrawSnake(); 
 
   for (int i=0;i<10;i++)
     m[i].DrawApple();
 
   glFlush();
   glutSwapBuffers();
}
 
void KeyboardEvent(int key, int a, int b)
{   
    switch(key)
    {
        case 101 :  dir=0; break;
         case 102:   dir=2; break;
        case 100 :  dir=1; break;
        case 103 :  dir=3; break;
     }
}
 
void timer(int = 0)
{
  display();
 
  Tick();
       
 glutTimerFunc(65,timer,0);
}
 
int main(int argc, char **argv) {
    
    srand(time(0));
    
    for (int i=0;i<10;i++)
        m[i].New();
    
 
 
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize (w, h);
glutCreateWindow ("HardcoreSnake"); 
glClearColor(1.0,1.0,0.6,1.0);  //цвет фона
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,w,0,h);
 
glutDisplayFunc (display);
glutSpecialFunc(KeyboardEvent);
glutTimerFunc(50,timer,0);
 
glutMainLoop();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2014, 02:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Загрузка информации из файла (система рекордов в игре "Змейка") (C++):

Как реализовать взаимодействие классов в игре "Змейка" - C++
Всем привет. Я пишу змейку и у меня следующий вопрос. У меня есть несколько классов Game, Snake, Block, Food. Каждый класс в отдельном...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем &quot;ORDER&quot;, содержащий следующие поля: &quot;Счет плательщика&quot;; &quot;Счет получателя&quot;; &quot;Сумма, переводится банковской...

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки - C++
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова &quot;ноль&quot;, &quot;один&quot;...&quot;девять&quot;,...

"Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) - C++
Всем здравструйте! :) Есть две задачки: &quot;Теория вероятности Шейтона&quot; и &quot;Кодирование/декодирование информации&quot;. Код первой: Задание...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

12
artemd55131
2 / 4 / 0
Регистрация: 26.06.2014
Сообщений: 61
27.06.2014, 05:30  [ТС] #2
Всем привет.Я занят разработкой змейки.Не получается сделать систему рекордов(
-запись в txt файл рекорда
-вывод рекорда из txt файла в программу
)
вот код:
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
#include <glut.h>
#include <iostream>
#include <time.h>
int record = 0;
#include <windows.h>
using namespace std;
 
int score = 0;
 
int N = 52,M = 25;
 
int Scale=25;
 
 
int w = Scale*N;
int h = Scale*M;
 
int dir,num=2;
 
struct 
{ int x;
  int y;}  s[100];
 
class Fructs
{ 
public:
    int x,y;
 
    void New()
    {  x=rand() % N;
        y=rand() % M;   }
    
    void DrawApple()
   {   glColor3f(0.0,1.0,0.0);
       glRectf(x*Scale,y*Scale,(x+1)*Scale,(y+1)*Scale); }
 
} m[10];
 
 void DrawSnake()
 {  
  glColor3f(0.0,0.0,1.5);
  for (int i=0;i<num;i++)
    {glRectf(s[i].x*Scale, s[i].y*Scale, (s[i].x+1.0)*Scale, (s[i].y+1.0)*Scale); }
 }
 
 void Tick()
 {
    for (int i=num;i>0;--i)
     {s[i].x=s[i-1].x;
     s[i].y=s[i-1].y;}
 
    if (dir==0) s[0].y+=1;      
    if (dir==1) s[0].x-=1;        
    if (dir==2) s[0].x+=1;         
    if (dir==3) s[0].y-=1;         
 
  for (int i=0;i<10;i++)
    if ((s[0].x==m[i].x) && (s[0].y==m[i].y)) 
      {num++; m[i].New();score++;}
    if(num ==2){score = 0;}
    
    if (s[0].x>N) {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
    if (s[0].x<0) {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  if (s[0].y>M)  {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
  if (s[0].y<0)  {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
 
 for (int i=1;i<num;i++)
     if (s[0].x==s[i].x && s[0].y==s[i].y)  num=i;
if (num >100){
    cout <<"you win!!!" <<endl;
    glutDestroyWindow(1);
    system("pause");
    }
 }
 
 
 
void DrawField()
  {
   glColor3f(0.0,0.7,0.0);
   glBegin(GL_LINES);
    for (int i=0; i<w; i+=Scale) 
      {glVertex2f(i,0); glVertex2f(i,h);}
    for (int j=0; j<h; j+=Scale)  
      {glVertex2f(0,j); glVertex2f(w,j);}
    glEnd();
}
 
 
void display() {
 
     glClear(GL_COLOR_BUFFER_BIT);
 
    DrawField();
 
    DrawSnake(); 
 
   for (int i=0;i<10;i++)
     m[i].DrawApple();
 
   glFlush();
   glutSwapBuffers();
}
 
void KeyboardEvent(int key, int a, int b)
{   
    switch(key)
    {
        case 101 :  dir=0; break;
         case 102:   dir=2; break;
        case 100 :  dir=1; break;
        case 103 :  dir=3; break;
     }
}
 
void timer(int = 0)
{
  display();
 
  Tick();
       
 glutTimerFunc(65,timer,0);
}
 
int main(int argc, char **argv) {
    
    srand(time(0));
    
    for (int i=0;i<10;i++)
        m[i].New();
    
 
 
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize (w, h);
glutCreateWindow ("HardcoreSnake"); 
glClearColor(1.0,1.0,0.6,1.0);  //цвет фона
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,w,0,h);
 
glutDisplayFunc (display);
glutSpecialFunc(KeyboardEvent);
glutTimerFunc(50,timer,0);
 
glutMainLoop();
}
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
27.06.2014, 08:14 #3
То ли я слепой, то ли у вас действительно нет чтения/записи в файл. Тогда в чем вопрос?
1
artemd55131
2 / 4 / 0
Регистрация: 26.06.2014
Сообщений: 61
27.06.2014, 08:47  [ТС] #4
в этом вся проблема.я не знаю как.
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
27.06.2014, 09:07 #5
Что вам записать в файл нужно?
0
artemd55131
2 / 4 / 0
Регистрация: 26.06.2014
Сообщений: 61
27.06.2014, 09:32  [ТС] #6
рекордное кол-во очков,а после игры показать его.(буду в понедельник)
0
nmcf
5679 / 4990 / 1701
Регистрация: 14.04.2014
Сообщений: 20,357
27.06.2014, 11:29 #7
Что нужно считывать и в каком месте? Сформулируй понятно.
0
Sonance
6 / 6 / 3
Регистрация: 15.02.2013
Сообщений: 56
27.06.2014, 12:02 #8
Вот так сохраняет.
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
 //-------------------------------------------------------------------------------
 void SaveScore(){
 
    std::ofstream F;
    F.open("Score.txt", std::ios::out | std::ios::trunc);
    F<<score;
    F.close(); 
    
 }
 //-------------------------------------------------------------------------------
 
 void Tick()
 {
    for (int i=num;i>0;--i)
     {s[i].x=s[i-1].x;
     s[i].y=s[i-1].y;}
 
    if (dir==0) s[0].y+=1;      
    if (dir==1) s[0].x-=1;        
    if (dir==2) s[0].x+=1;         
    if (dir==3) s[0].y-=1;         
 
  for (int i=0;i<10;i++)
    if ((s[0].x==m[i].x) && (s[0].y==m[i].y)) 
      {num++; m[i].New();score++;}
    if(num ==2){score = 0;}
    
    if (s[0].x>N) {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
    if (s[0].x<0) {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  if (s[0].y>M)  {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
  if (s[0].y<0)  {cout <<"your score:" <<score <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  SaveScore();
 for (int i=1;i<num;i++)
     if (s[0].x==s[i].x && s[0].y==s[i].y)  num=i;
if (num >100){
    cout <<"you win!!!" <<endl;
    glutDestroyWindow(1);
    SaveScore();
    system("pause");
    }
 }
И кстати если резко нажать вперед-назад змейка умирает об себя.

Добавлено через 5 минут
Цитата Сообщение от nmcf Посмотреть сообщение
Что нужно считывать и в каком месте? Сформулируй понятно.
Что непонятного то, написано же переменную score писать и читать из файла.

А чтение будет так:
C++
1
2
3
4
std::ifstream F;
F.open("Score", std::ios::in);
F>>record;
F.close();
Добавлено через 4 минуты
Цитата Сообщение от artemd55131 Посмотреть сообщение
Не получается сделать считывание из файла и загрузки рекорда,помогите.Пытался сам,но всё запорол
А откуда код если не секрет, учебник какой-то? Я бы тоже поковырял, ссылку в ЛС плз.
1
artemd55131
2 / 4 / 0
Регистрация: 26.06.2014
Сообщений: 61
30.06.2014, 03:18  [ТС] #9
спс всё понятно.только переменная для рекорда record а не score.

Добавлено через 2 минуты
Sonance, набери на youtube c++ всё что хочешь няйдёшь

Добавлено через 3 часа 20 минут
вставил код чтения в main. информация записывается,но не сохраняется(если даже я набрал меньше рекорда то в файл результат становится меньше ,а должен меняться только если я набрал больше.
код:
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
151
152
153
154
155
156
157
158
159
160
161
#include <fstream>
#include <glut.h>
#include <iostream>
#include <time.h>
int record = 0;
#include <windows.h>
using namespace std;
 
int score = 0;
 
int N = 52,M = 25;
 
int Scale=25;
 
 
int w = Scale*N;
int h = Scale*M;
 
int dir,num=2;
 
struct 
{ int x;
  int y;}  s[100];
 
class Fructs
{ 
public:
    int x,y;
 
    void New()
    {  x=rand() % N;
        y=rand() % M;   }
    
    void DrawApple()
   {   glColor3f(0.0,1.0,0.0);
       glRectf(x*Scale,y*Scale,(x+1)*Scale,(y+1)*Scale); }
 
} m[10];
 
 void DrawSnake()
 {  
  glColor3f(0.0,0.0,1.5);
  for (int i=0;i<num;i++)
    {glRectf(s[i].x*Scale, s[i].y*Scale, (s[i].x+1.0)*Scale, (s[i].y+1.0)*Scale); }
 }
  void SaveScore(){
 
    std::ofstream F;
    F.open("Score.txt", std::ios::out | std::ios::trunc);
    F<<score;
    F.close();
 
 
  }
 void Tick()
 {
    for (int i=num;i>0;--i)
     {s[i].x=s[i-1].x;
     s[i].y=s[i-1].y;}
 
    if (dir==0) s[0].y+=1;      
    if (dir==1) s[0].x-=1;        
    if (dir==2) s[0].x+=1;         
    if (dir==3) s[0].y-=1;         
 
  for (int i=0;i<10;i++)
    if ((s[0].x==m[i].x) && (s[0].y==m[i].y)) 
      {num++; m[i].New();score++;}
    if(num ==2){score = 0;}
    if(score > record){record = score; SaveScore();}
    if (s[0].x>N) {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
    if (s[0].x<0) {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  if (s[0].y>M)  {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
  if (s[0].y<0)  {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  
 for (int i=1;i<num;i++)
     if (s[0].x==s[i].x && s[0].y==s[i].y)  num=i;
if (num >100){
    cout <<"you win!!!" <<endl;
    glutDestroyWindow(1);
    SaveScore();
    system("pause");
    }
 }
 
 
 
void DrawField()
  {
   glColor3f(0.0,0.7,0.0);
   glBegin(GL_LINES);
    for (int i=0; i<w; i+=Scale) 
      {glVertex2f(i,0); glVertex2f(i,h);}
    for (int j=0; j<h; j+=Scale)  
      {glVertex2f(0,j); glVertex2f(w,j);}
    glEnd();
}
 
 
void display() {
 
     glClear(GL_COLOR_BUFFER_BIT);
 
    DrawField();
 
    DrawSnake(); 
 
   for (int i=0;i<10;i++)
     m[i].DrawApple();
 
   glFlush();
   glutSwapBuffers();
}
 
void KeyboardEvent(int key, int a, int b)
{   
    switch(key)
    {
        case 101 :  dir=0; break;
         case 102:   dir=2; break;
        case 100 :  dir=1; break;
        case 103 :  dir=3; break;
     }
}
 
void timer(int = 0)
{
  display();
 
  Tick();
       
 glutTimerFunc(65,timer,0);
}
 
int main(int argc, char **argv) {
    std::ifstream F;
F.open("Score", std::ios::in);
F>>record;
F.close();
    srand(time(0));
    
    for (int i=0;i<10;i++)
        m[i].New();
    
 
 
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize (w, h);
glutCreateWindow ("HardcoreSnake"); 
glClearColor(1.0,1.0,0.6,1.0);  //цвет фона
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,w,0,h);
 
glutDisplayFunc (display);
glutSpecialFunc(KeyboardEvent);
glutTimerFunc(50,timer,0);
 
glutMainLoop();
}
может я накасипорил где?

Добавлено через 30 секунд
вставил код чтения в main. информация записывается,но не сохраняется(если даже я набрал меньше рекорда то в файл результат становится меньше ,а должен меняться только если я набрал больше.
код:
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
151
152
153
154
155
156
157
158
159
160
161
#include <fstream>
#include <glut.h>
#include <iostream>
#include <time.h>
int record = 0;
#include <windows.h>
using namespace std;
 
int score = 0;
 
int N = 52,M = 25;
 
int Scale=25;
 
 
int w = Scale*N;
int h = Scale*M;
 
int dir,num=2;
 
struct 
{ int x;
  int y;}  s[100];
 
class Fructs
{ 
public:
    int x,y;
 
    void New()
    {  x=rand() % N;
        y=rand() % M;   }
    
    void DrawApple()
   {   glColor3f(0.0,1.0,0.0);
       glRectf(x*Scale,y*Scale,(x+1)*Scale,(y+1)*Scale); }
 
} m[10];
 
 void DrawSnake()
 {  
  glColor3f(0.0,0.0,1.5);
  for (int i=0;i<num;i++)
    {glRectf(s[i].x*Scale, s[i].y*Scale, (s[i].x+1.0)*Scale, (s[i].y+1.0)*Scale); }
 }
  void SaveScore(){
 
    std::ofstream F;
    F.open("Score.txt", std::ios::out | std::ios::trunc);
    F<<score;
    F.close();
 
 
  }
 void Tick()
 {
    for (int i=num;i>0;--i)
     {s[i].x=s[i-1].x;
     s[i].y=s[i-1].y;}
 
    if (dir==0) s[0].y+=1;      
    if (dir==1) s[0].x-=1;        
    if (dir==2) s[0].x+=1;         
    if (dir==3) s[0].y-=1;         
 
  for (int i=0;i<10;i++)
    if ((s[0].x==m[i].x) && (s[0].y==m[i].y)) 
      {num++; m[i].New();score++;}
    if(num ==2){score = 0;}
    if(score > record){record = score; SaveScore();}
    if (s[0].x>N) {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
    if (s[0].x<0) {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  if (s[0].y>M)  {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}  
  if (s[0].y<0)  {cout <<"your score:" <<score <<endl <<"your record:" <<record <<endl; glutDestroyWindow(1); system("pause"); exit(0);}
  
 for (int i=1;i<num;i++)
     if (s[0].x==s[i].x && s[0].y==s[i].y)  num=i;
if (num >100){
    cout <<"you win!!!" <<endl;
    glutDestroyWindow(1);
    SaveScore();
    system("pause");
    }
 }
 
 
 
void DrawField()
  {
   glColor3f(0.0,0.7,0.0);
   glBegin(GL_LINES);
    for (int i=0; i<w; i+=Scale) 
      {glVertex2f(i,0); glVertex2f(i,h);}
    for (int j=0; j<h; j+=Scale)  
      {glVertex2f(0,j); glVertex2f(w,j);}
    glEnd();
}
 
 
void display() {
 
     glClear(GL_COLOR_BUFFER_BIT);
 
    DrawField();
 
    DrawSnake(); 
 
   for (int i=0;i<10;i++)
     m[i].DrawApple();
 
   glFlush();
   glutSwapBuffers();
}
 
void KeyboardEvent(int key, int a, int b)
{   
    switch(key)
    {
        case 101 :  dir=0; break;
         case 102:   dir=2; break;
        case 100 :  dir=1; break;
        case 103 :  dir=3; break;
     }
}
 
void timer(int = 0)
{
  display();
 
  Tick();
       
 glutTimerFunc(65,timer,0);
}
 
int main(int argc, char **argv) {
    std::ifstream F;
F.open("Score", std::ios::in);
F>>record;
F.close();
    srand(time(0));
    
    for (int i=0;i<10;i++)
        m[i].New();
    
 
 
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize (w, h);
glutCreateWindow ("HardcoreSnake"); 
glClearColor(1.0,1.0,0.6,1.0);  //цвет фона
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,w,0,h);
 
glutDisplayFunc (display);
glutSpecialFunc(KeyboardEvent);
glutTimerFunc(50,timer,0);
 
glutMainLoop();
}
может я накасипорил где?

Добавлено через 12 часов 30 минут
Sonance, rrrrrrrrrrrrrrrr
0
Psilon
Master of Orion
Эксперт .NET
5912 / 4809 / 634
Регистрация: 10.07.2011
Сообщений: 14,409
Записей в блоге: 5
Завершенные тесты: 4
30.06.2014, 10:35 #10
artemd55131, может проще будет использовать Boost::serialization? Тем более, что рекорды таким образом можно будет расширять сколько угодно, а не ломать логику парсинга при попытке добавить новое поле.
0
dzrkot
30.06.2014, 11:21
  #11

Не по теме:

а змейка ваша? или та, которая на ютубе в уроках?) а то как-то без основ сделать змейку проблематично)

0
Sonance
6 / 6 / 3
Регистрация: 15.02.2013
Сообщений: 56
30.06.2014, 11:57 #12
Ну так читать надо из того же файла в который записываете
C++
1
2
3
4
5
int main(int argc, char **argv) {
    std::ifstream F;
F.open("вот тут", std::ios::in);
F>>record;
F.close();
И если уж переносите значение score в record
C++
1
if(score > record){record = score; SaveScore();}
Тогда и пишите в файл record, хотя тут незачем переменные туда сюда гонять
C++
1
2
3
4
std::ofstream F;
    F.open("Score.txt", std::ios::out | std::ios::trunc);
    F<<record;
    F.close();
Цитата Сообщение от dzrkot Посмотреть сообщение
а змейка ваша? или та, которая на ютубе в уроках?) а то как-то без основ сделать змейку проблематично)
И это тоже верно, хотя при желании во всем по ходу можно разобраться, если понимать что пишешь а не бездумно копировать код.
0
artemd55131
2 / 4 / 0
Регистрация: 26.06.2014
Сообщений: 61
30.06.2014, 12:14  [ТС] #13
не понимаю
0
30.06.2014, 12:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2014, 12:14
Привет! Вот еще темы с ответами:

"Змейка": при нажатии клавиши игра просто останавливается - C++
#include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;conio.h&gt; using namespace std; const int Y = 20, X = 50; enum DIR{UP, DOWN, LEFT,...

Пишу игру "змейка". Есть вопрос по ней - C++
Я сейчас пишу игру &quot;змейка&quot;. (в консоли), но возникла одна проблема. Направление движения от пользователя я принимаю так: раз в секунду...

Небольшой пример. Игра "змейка" - как в ней делают препятствия - C++
Здравствуйте сегодня случайно увидел старенькую игру &quot;змейка&quot; и меня заинтересовало как именно они делают там препятствия чтобы их нужно...

"Змейка", не работают кнопки направления движения - C++
Всем привет! Нашёл рабочий программный код змейки в С++,откомпилированный и запущенный в Dev C++ При запуске не работают кнопки...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.