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

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

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

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

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

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

Visual Studio не читает операторы, что начинаются на "glu" ("gluBuild2DMipmaps", "gluPerspective") - C++
Данный код должен выводить на экран кубик который должен вращаться, но возникла проблема. Для выполнения этого кода я подключи библиотеку...

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

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

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

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

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

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

SHAKE
0
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
11.05.2012, 18:44 #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");
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
11.05.2012, 19:10 #6
Один мой друг делал змейку в canvas-e с javascript, другой в C++ с OpenGl. Потратили время примерно одинаково, имхо второму было попроще, да и браузера не требует.
0
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
11.05.2012, 19:16 #7
MrGluck, ИМХО, у змейки на джаваскрипт кроссплатформенность повыше
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
11.05.2012, 19:20 #8
Цитата Сообщение от ser4ega Посмотреть сообщение
MrGluck, ИМХО, у первой змейки кроссплатформенность повыше
что не поддерживает OpenGl? Достаточно скомпилировать код на винде и на Unix-системе - вот тебе и готовый выходной файл с игрой. А на некоторых компах ничего, кроме IE не найдешь, но он слишком крут, чтобы поддерживать HTML5.
0
Bourdon
-13 / 4 / 1
Регистрация: 08.05.2012
Сообщений: 12
11.05.2012, 20:50  [ТС] #9
Посмотрел, что люди делают на Visual C++ с OpenGL... Я поражен!
Скажите, а OpenGL - это только для графики?
0
ser4ega
27 / 27 / 3
Регистрация: 15.11.2009
Сообщений: 143
11.05.2012, 21:12 #10
MrGluck, А джаваскрипт просит только браузер рабочий. На ось и железо ему класть =)

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

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

Не по теме:

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

0
Bourdon
-13 / 4 / 1
Регистрация: 08.05.2012
Сообщений: 12
13.05.2012, 10:49  [ТС] #14
Так что там с OpenGL?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 10:49
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2012, 10:49
Ответ Создать тему
Опции темы

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