Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
Bourdon
-13 / 4 / 3
Регистрация: 08.05.2012
Сообщений: 12
1

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

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

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

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

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

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...

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

"Змейка": при нажатии клавиши игра просто останавливается
#include<iostream> #include<windows.h> #include<conio.h> using namespace...

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

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

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

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

Не по теме:

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

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

Загрузка информации из файла (система рекордов в игре "Змейка")
Не получается сделать считывание из файла и загрузки рекорда,помогите.Пытался...

Как реализовать взаимодействие классов в игре "Змейка"
Всем привет. Я пишу змейку и у меня следующий вопрос. У меня есть несколько...

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


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

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

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