Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.59
Bourdon
-13 / 4 / 1
Регистрация: 08.05.2012
Сообщений: 12
#1

"Змейка" в Visual C++ - C++

11.05.2012, 17:34. Просмотров 3073. Ответов 13
Метки нет (Все метки)

Здравствуйте, дорогие форумчане!
Мой друг пишет на Java. Когда я попросил его продемонстрировать мне его навыки программирования, то он написал для меня маленькую игру, всем известную "Змейку".
Так вот, если кому интересно, попробуйте повторить его "подвиг" в среде Visual C++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 17:34     "Змейка" в Visual C++
Посмотрите здесь:

Загрузка информации из файла (система рекордов в игре "Змейка") - C++
Не получается сделать считывание из файла и загрузки рекорда,помогите.Пытался сам,но всё запорол#include <glut.h> #include <iostream> ...

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

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

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

Исправление кода игры "Змейка" - C++
Добрый вечер, помогите исправить код(игра змейка), на данный момент когда запускаю игру, появляется 5 яблок, после того как змейка ест...

Программа игра "Змейка" - C++
Программа выдает ошибки не понимаю, что сделать. Вот код самой программы. Буду очень благодарна за помощь. #include "zmejka.h" int main...

"Змейка", C++ (консоль) - C++
Доброго инета всем. Я тут делаю задание по игре "Змейка"... Вот пока код еще не дописанный: #include <stdio.h> #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
11.05.2012, 17:42     "Змейка" в Visual C++ #2
Цитата Сообщение от Bourdon Посмотреть сообщение
Здравствуйте, дорогие форумчане!
Мой друг пишет на Java. Когда я попросил его продемонстрировать мне его навыки программирования, то он написал для меня маленькую игру, всем известную "Змейку".
Так вот, если кому интересно, попробуйте повторить его "подвиг" в среде Visual C++.
Пардон не понял , это как понимать - " А вам слабо ? "
Bourdon
-13 / 4 / 1
Регистрация: 08.05.2012
Сообщений: 12
11.05.2012, 17:46  [ТС]     "Змейка" в Visual C++ #3
Скорее: "Интересно, а как бы это выглядело в Visual C++..."
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
11.05.2012, 18:34     "Змейка" в Visual C++ #4
в консоле примерно так!

SHAKE
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
11.05.2012, 18:44     "Змейка" в Visual C++ #5
в консоли моя
PHP
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
162
163
164
165
166
167
168
169
170
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <fstream.h>
#define n 15
#define m 30
//#include <stdlib.h>
 
void showscore(int l,char nickname[15])
{
fstream inFile;
inFile.open("C://file.txt");
if(!inFile) {cerr << "\nCouldn't open file, Try again"; return;}
char next;
typedef char stri[25];
stri MasString[4];char temp[25]="";
int i=0;cout<<endl;
cin.get();
while(true){
              inFile.getline(MasString[i],20); 
              next=inFile.peek();
              if (next==EOF) break;
              i++;             
              }
struct BestScores{char mesto[20]; char nick[20];char score[20];} bsc[3];
 
for (int j=0;j<3;j++) 
              {      
              sscanf(MasString[j+1], "%s%s%s", bsc[j].mesto, bsc[j].nick, bsc[j].score);
              if (l>atoi(bsc[j].score))
                 {
                 for(int k=3;k>j+1;k--)
                         {
                         strcpy(temp,MasString[k-1]);
                         temp[0]=(char)(48+k);
                         strcpy(MasString[k],temp);}
                 sprintf(bsc[j].score,"%d",l);
                 strcpy(MasString[j+1],bsc[j].mesto);
                 strcat(MasString[j+1]," ");
                 strcat(MasString[j+1],nickname);
                 strcat(MasString[j+1], " ");
                 strcat(MasString[j+1],bsc[j].score);
                 l=0;
                 }
              }
              fstream datei;
              datei.open("C://file.txt");  
for(int j=0;j<4;j++){cout<<MasString[j]<<endl;datei<<MasString[j]<<endl;}datei.close();
inFile.close();
return ;
};
void gameover(int sco,char nick[15])
{
     system("cls");
     cout<<"GAMEOVER your score "<<sco;showscore(sco,nick);Sleep(2000);system("PAUSE");
     return;
    
};
void Win(int sco,char nick[15],int l)
{cout<<"You WIN!!! your score "<<l*10;showscore(sco,nick); system("PAUSE"); return ;};
void Painting(COORD c,HANDLE h,int *arr[], int *TTL[])
{
   for(int i=0;i<n;i++)
    {
            for(int j=0;j<m;j++)
            {
                    c.X = j;
                    c.Y = i;
                    SetConsoleCursorPosition(h, c);
                    switch (arr[i][j])
                    {
                    case 0:{if(TTL[i][j]>0){TTL[i][j]--;if(TTL[i][j]>0){cout<<"o";}else cout<<" ";break;}break;  }
                    case 1:cout<<(char)4;break;
                    case 2:if(TTL[i][j]>0) TTL[i][j]=0;cout<<"$";break;
                    }
            }
    cout<<endl;
   }
};
void CreateDollar(int *arr[],int *TTL[],int *r1, int *r2)
{
     while((arr[*r1=rand()%(n-1)][*r2=rand()%(m-1)]==1)||(TTL[*r1][*r2])||(arr[*r1][*r2]==3)){;}
     arr[*r1][*r2]=2;
};
void CreateFirstTime(int *arr[],int *TTL[])
{
 for(int i=0;i<n;i++)//zapolnenie massiva i pervi4naya otrisovka
    {
            for(int j=0;j<m;j++)
            {
                    if ((i==n-1)||(i==0)||(j==0)||(j==m-1)) {arr[i][j]=3;cout<<(char)254;TTL[i][j]=-1;} else{
                    arr[i][j]=0;TTL[i][j]=0;cout<<" ";}
            }
            cout<<endl;
    }     
};
void CheckFileScore()
{
fstream ds;
ds.open("C://file.txt");
if(!ds) {
        ds.close();ofstream cr; cr.open("C://file.txt"); 
        cr<<"Best scores:\n1) wasya 2520\n2) ser4ega 120\n3) ser4egaDrunk 110";
        cr.close();
        }
ds.close();
};
void Melody(){Beep (659.26,200);
          Beep (659.26,200);
          Sleep (200);
          Beep (659.26,200);
          Sleep (100);
          Beep (523.26,200);
          Beep (659.26,200);
          Sleep(200);
          Beep (783.98,200);
          Sleep(400);
          Beep (391.99,200);};
 
//INT MAIN INT MAIN INT MAIN INT MAININT MAIN INT MAIN INT MAIN INT MAININT MAIN INT MAIN INT MAIN INT MAIN
 
int main()
{
COORD c;
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
    CheckFileScore();
    srand(time(0));
    int ii=1,ij=1,r1,r2,l=0,sl=250,sco=0,k=0;
    bool music=true;
    char g,oldg='d',nick[15];cout<<"Enter your name\n";cin>>nick; 
    int **arr=new int*[n],**TTL=new int*[n];
    for (int i=0;i<n;i++) {arr[i]=new int[m];TTL[i]=new int[m];}//arr[n][m] arr[i][j]
cout<<"Be careful when you eat, try to do eat from up or from left, else";
cout<<"  you can lose =) Now Put on 'd' or 's' or die immediatly *EVIL*";
g=(char)getch();
system("cls");
CreateFirstTime(arr,TTL);
CreateDollar(arr,TTL,&r1,&r2);
arr[1][1]=1;
while(true){          
if(kbhit() ) g=(char)getch();
    switch(g){
              case('d'):oldg=g;if((TTL[ii][ij+1]==0)){arr[ii][ij]=0;ij++;}else {gameover(sco,nick);return 0;}break;
              case('D'):oldg=g;if((TTL[ii][ij+1]==0)){arr[ii][ij]=0;ij++;}else {gameover(sco,nick);return 0;}break;
              case('a'):oldg=g;if((TTL[ii][ij-1]==0)){arr[ii][ij]=0;ij--;}else {gameover(sco,nick);return 0;}break;
              case('A'):oldg=g;if((TTL[ii][ij-1]==0)){arr[ii][ij]=0;ij--;}else {gameover(sco,nick);return 0;}break;
              case('w'):oldg=g;if((TTL[ii-1][ij]==0)){arr[ii][ij]=0;ii--;}else {gameover(sco,nick);return 0;}break;
              case('W'):oldg=g;if((TTL[ii-1][ij]==0)){arr[ii][ij]=0;ii--;}else {gameover(sco,nick);return 0;}break;
              case('s'):oldg=g;if((TTL[ii+1][ij]==0)){arr[ii][ij]=0;ii++;}else {gameover(sco,nick);return 0;}break;
              case('S'):oldg=g;if((TTL[ii+1][ij]==0)){arr[ii][ij]=0;ii++;}else {gameover(sco,nick);return 0;}break;
              case('M'):music=!music;g=oldg;continue; break;
              case('m'):music=!music;g=oldg;continue;break;
              case('p'): while(!kbhit()) Sleep(100);
              case('P'): while(!kbhit()) Sleep(100);
              default:g=oldg;continue;break;
              }      
              if(music)Beep(100,10);
    arr[ii][ij]=1;TTL[ii][ij]=l+1;
    if (arr[r1][r2]==1){if(music)Beep (200,20);l++;sco+=10*(k+1);CreateDollar(arr,TTL,&r1,&r2);}
    Painting(c,h,arr,TTL);
    cout<<"Score "<<sco;
    if (l==10){if(music)Melody();k++;l=0;sl-=30;if (sl<40) Win(sco,nick,l);}
    cout<<endl<<"Level "<<k+1; 
    cout<<endl<<"Use WASD to move, collect the money, become faster, \nwrite down your name in history!!!";
    cout<<"\n\n\tTo turn Off/On the music press M";
    cout<<"\n\n\tTo pause press P, to play press ANYKEY";
    if(k<5){ if(kbhit()) Sleep(sl-120);else Sleep(sl);} else Sleep(sl);
}
    system("PAUSE");
}
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
11.05.2012, 19:10     "Змейка" в Visual C++ #6
Один мой друг делал змейку в canvas-e с javascript, другой в C++ с OpenGl. Потратили время примерно одинаково, имхо второму было попроще, да и браузера не требует.
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
11.05.2012, 19:16     "Змейка" в Visual C++ #7
MrGluck, ИМХО, у змейки на джаваскрипт кроссплатформенность повыше
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
11.05.2012, 19:20     "Змейка" в Visual C++ #8
Цитата Сообщение от ser4ega Посмотреть сообщение
MrGluck, ИМХО, у первой змейки кроссплатформенность повыше
что не поддерживает OpenGl? Достаточно скомпилировать код на винде и на Unix-системе - вот тебе и готовый выходной файл с игрой. А на некоторых компах ничего, кроме IE не найдешь, но он слишком крут, чтобы поддерживать HTML5.
Bourdon
-13 / 4 / 1
Регистрация: 08.05.2012
Сообщений: 12
11.05.2012, 20:50  [ТС]     "Змейка" в Visual C++ #9
Посмотрел, что люди делают на Visual C++ с OpenGL... Я поражен!
Скажите, а OpenGL - это только для графики?
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
11.05.2012, 21:12     "Змейка" в Visual C++ #10
MrGluck, А джаваскрипт просит только браузер рабочий. На ось и железо ему класть =)

Добавлено через 2 минуты
И кстати, а нафига для работы жаваскрипта html5? Oo
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
11.05.2012, 21:27     "Змейка" в Visual C++ #11
Цитата Сообщение от ser4ega Посмотреть сообщение
MrGluck, А джаваскрипт просит только браузер рабочий. На ось и железо ему класть =)

Добавлено через 2 минуты
И кстати, а нафига для работы жаваскрипта html5? Oo
canvas просит HTML5 как бэ
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
12.05.2012, 01:36     "Змейка" в Visual C++ #12
MrGluck, да ладно, можно и без канвы игрушку вроде змейки на джаваскрипте написать,
двигать картинки то никто не запрещает)
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
12.05.2012, 02:00     "Змейка" в Visual C++ #13
Цитата Сообщение от ser4ega Посмотреть сообщение
MrGluck, да ладно, можно и без канвы игрушку вроде змейки на джаваскрипте написать,
двигать картинки то никто не запрещает)

Не по теме:

По-моему, это метод бобра-извращенца

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 10:49     "Змейка" в Visual C++
Еще ссылки по теме:

Отладчик Visual Sudio: непонятные значения в окне "Локальные" - C++
В visual studio в окне &quot;локальные&quot; в столбце &quot;значения&quot; вместо значений элементов вектора какая-то фигня.Как изменить формат значений в...

Зачем нужен "stdafx.h" заголовок в Visual Studio - C++
Объясните мне пожалуйста почему в visual studio 2015 у меня(да и вроде бы в прошлых версиях) когда создаёшь новый файл,автоматом...

Visual Studio C++, ошибка : "Данный проект устарел" - C++
Здравствуйте. Никак не могу понять в чем проблема. Начал не так давно работать в Visual Studio. До определенного момента времени все...

Не отображается значёк "Отладка" в Visual Studio 2010 - C++
Привет всем.До Visual'ки работал в code-blocks, сегодня решил запустить visual studio, написал код, а как начать компиляцию- не знаю.F5-...

visual studio 2012 - ошибка "переопределение типа" - C++
имею head.h #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;Windows.h&gt; #pragma comment(lib, &quot;ws2_32&quot;) using namespace...


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

Или воспользуйтесь поиском по форуму:
Bourdon
-13 / 4 / 1
Регистрация: 08.05.2012
Сообщений: 12
13.05.2012, 10:49  [ТС]     "Змейка" в Visual C++ #14
Так что там с OpenGL?
Yandex
Объявления
13.05.2012, 10:49     "Змейка" в Visual C++
Ответ Создать тему
Опции темы

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