Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
nF0rce
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 3
1

Компьютерная игра "Семь лунок": Сделать массив, который бы реагировал на перестановку шаров в лунках

22.05.2014, 06:35. Просмотров 1153. Ответов 3
Метки нет (Все метки)

Всем привет, помогите пожалуйста с курсовой работой по программированию (Си) в borland c 3.1.
Курсовая: Компьютерная игра ("Семь лунок");
Интерфейс я все же смог сделать, но никак не могу сделать массив, который бы реагировал на перестановку шаров в лунках.
Так сказать самое главное. А дальше я уже сам бы доделал.

Задание:
Вдоль доски расположено 7 лунок, в которых лежат сначало 3 черных шара потом пустая лунка и 3 белых шара. Передвинуть черные шары на место белых, а белые - на место черных. Шар можно передвинуть либо в соседнюю с ним пустую лунку, либо в пустую лунку, находящуюся непосредственно за ближайшим шаром

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
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
 
int main(void)
{
   int gdriver = DETECT, gmode;
   initgraph(&gdriver, &gmode, "");
 
 
 
  // setbkcolor(CYAN);
  setcolor(CYAN);
  setfillstyle(1,3);
    bar(0,0,650,480);
 
 
    //doska
    setcolor(5);
    setfillstyle(1,5);
    bar(132,220,516,285);
 
    setcolor(5);
    setfillstyle(1,5);
    pieslice(508,285,90,0,65);
 
    setcolor(5);
    setfillstyle(1,5);
    pieslice(140,285,180,90,65);
 
    //durki  (centr)
    setcolor(8);
    setfillstyle(1,8);
    fillellipse(325,252,25,25);
    setcolor(8);
    setfillstyle(1,3);
    fillellipse(328,255,20,20);
 
    setcolor(8);
    setfillstyle(1,8);
    fillellipse(325,252,25,25);
    setcolor(8);
    setfillstyle(1,3);
    fillellipse(328,255,20,20);
 
    /*holes*/
    setcolor(8);
    setfillstyle(1,8);
    fillellipse(260,252,25,25);
    fillellipse(195,252,25,25);
    fillellipse(130,252,25,25);
 
    fillellipse(390,252,25,25);
    fillellipse(455,252,25,25);
    fillellipse(520,252,25,25);
 
    setcolor(3);
    setfillstyle(0,8);
    fillellipse(263,255,20,20);
    fillellipse(198,255,20,20);
    fillellipse(133,255,20,20);
 
    fillellipse(393,255,20,20);
    fillellipse(458,255,20,20);
    fillellipse(523,255,20,20);
 
    setcolor(0);
    setfillstyle(1,0);
    fillellipse(260,252,25,25);
    fillellipse(195,252,25,25);
    fillellipse(130,252,25,25);
    setcolor(15);
    setfillstyle(1,15);
    fillellipse(252,245,5,5);
    fillellipse(187,245,5,5);
    fillellipse(122,245,5,5);
 
    setcolor(7);
    setfillstyle(1,7);
    fillellipse(390,252,25,25);
    fillellipse(455,252,25,25);
    fillellipse(520,252,25,25);
    setcolor(15);
    setfillstyle(1,15);
    fillellipse(382,245,5,5);
    fillellipse(447,245,5,5);
    fillellipse(512,245,5,5);
 
    int shar[7]={1,1,1,0,2,2,2};
    int win[7]={2,2,2,0,1,1,1};
    int c;
    int x=300,q=3;
    for(;;){
        setfillstyle(1,4);
    bar(x,286,x+50,296);
    if(kbhit()){
    c=getch();
    switch(c){
            case 75:
            if(q>0){
    setfillstyle(1,3);
    bar(x,286,x+50,296);
            x-=65;
            q-=1;}
            break;
 
            case 77:
            if(q<6){
            setfillstyle(1,3);
            bar(x,286,x+50,296);
            x+=65 ;
            q+=1;}
            break;
 
            case 13:
           //   if(abs(i-i_null)<3)
          // shar[q]
 
            case 27:
            closegraph;
            return 0;
 
     }
    }}
 
    getch();
    return 0;}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 06:35
Ответы с готовыми решениями:

Как компилятор выбирает участок памяти на который "ляжет" массив?
Искал способ создать массив в C и нашел следующее: data_type array_name; ...

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;,...

Нужно сделать игру "Крестики-Нолики" используя двухмерный массив.
Добрый вечер, ребята. Нам задали очень интесное задание и я думаю что и вам...

Сделать динамический массив из структур вроде этого "inf=new avialiner[n];"
Здравствуйте, нужна помощь с указателем и структурой. #include&lt;stdio.h&gt; ...

Записать все числа из файла после знака "=" и "," в переменные или одномерный массив
Есть входной файл input.txt вида: TRIANGLE: P1=100,100; P2=200,200; P3=150,...

3
gng
846 / 582 / 179
Регистрация: 08.09.2013
Сообщений: 1,567
22.05.2014, 16:13 2
Количество шаров одного цвета задается макросом N.
Только для трех (семь лунок) - скучноватая задача, есть соблазн записать решение пошагово, а так хоть какой-то алгоритм.
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
#include <stdio.h>
#define N 3
 
char board[2*N+3];
 
int move_left (int n) {
  board[n]= board[n+1];
  board[n+1]= ' ';
  printf (board);
  return n+1;
}
int jump_right (int n) {
  board[n]= board[n-2];
  board[n-2]= ' ';
  printf (board);
  return n-2;
}
main() {
  int i, j, n= N;
 
  for (i=0; i<N; i++) board[i]= 'b';
  board[i++]= ' ';
  for (; i<2*N+1; i++) board[i]= 'w';
  board[2*N+1]= '\n';
  board[2*N+2]= 0;
  printf (board);
  for (j= 0; j < N; j++) {
    for (i= 0; i < N; i++) {
      n= move_left(n);
      n= jump_right(n);
    }
    for (i= ((j < N-1) ? 0 : N); i < N+1; i++) n= move_left(n);
  }
}
0
nF0rce
0 / 0 / 0
Регистрация: 22.05.2014
Сообщений: 3
22.05.2014, 16:43  [ТС] 3
gng, Извините меня, за мои знания (В общем я не понял, что делает этот алгоритм)
Я правильно понимаю, что ваш алгорит позволят передвигать 6 шаров (3 черных и 3 белых) через пустую лунку?

Мне нужно, что бы к примеру если я нажал "Enter" То выделенный шар (3 слева, в моем случае), переместился вправо (пустую лунку).
И так должны двигаться все шары.
Компьютерная игра "Семь лунок": Сделать массив, который бы реагировал на перестановку шаров в лунках
0
gng
846 / 582 / 179
Регистрация: 08.09.2013
Сообщений: 1,567
22.05.2014, 18:48 4
Цитата Сообщение от nF0rce Посмотреть сообщение
Я правильно понимаю, что ваш алгорит позволят передвигать 6 шаров (3 черных и 3 белых) через пустую лунку?
Да, передвигает 2*N шаров через пустую лунку.
Цитата Сообщение от nF0rce Посмотреть сообщение
То выделенный шар (3 слева, в моем случае), переместился вправо (пустую лунку).
Создаете массив из семи элементов, например
C
1
int board[]= {1,1,1,0,2,2,2}
И переставляете
C
1
2
board[3]= 1;
board[2]= 0;
С интерфейсом как-нибудь сами.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2014, 18:48

Одномерный массив. Простые числа. "Предупреждения" и "замечания" при компиляции в gcc под linux
Доброго времени суток. Нужна помощь. Не могу разобраться, почему не...

Массив: В каждом слове вхождения "abc" заменить на "def"
Подскажите, пожалуйста, что не так с кодом, при вводе слов консоль закрывается,...

Не получается динамически увеличить массив структур "Отрезок" "Прямоугольник"
Делая следующее задание наткунлся на проблему Определить структуры: отрезок...


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

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

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