Массивы
- Войдите на сайт для отправки комментариев
Ср, 13/11/2013 - 19:28
Хоть убей не могу понять двухмерные массивы.
Мне они нужны для вывода на дисплей знаков в рандомной позиции(мне так по крайней мере кажется). Можете объяснить тормозу? Как они используются, как их выводить и зачем они нужны?
Не проще брать случайные координаты вывода на дисплей, нежели для этого еще использовать лишнюю память?
думаю rnd() больше в памяти займет, чем массив
Я сделал через переменные просто у меня их много и они постоянно меняются изза чегоыод занимает много места
#include <stdlib.h> // Пустой скетч 404 байта для ATmega16 // 900 байт void setup() { } void loop() { rand(); }Разница 500 байт.
Какого размера массив нужен? А то мы говорим про абстрактный дисплей, а также абстрактный вывод символов в случайную позицию на дисплей.
Если длина массива будет больше 500 байт (заметьте rand() располагается во флеше, а не в RAM, а массив в RAM), то делайте выводы.
дисплей 20 на 4.
3 вида символов.
Один крестик. 5 ноликов и не более 20 черточек.
Наверное кто то понял больше чем я. Я ничем не могу помочь при такой формулировке задачи.
Человек скорее всего имел ввиду не случайную позицию, а любую те произвольную,
Человек скорее всего имел ввиду не случайную позицию, а любую те произвольную,
Если бы ему было нужно, он бы объяснил, а смысл то пинать, да переспрашивать. Наверное уже вопрос и решился сам собой.
Мне вообще мало понятны такие ребята, запустят вопрос и забудут... а тема живет еще пару недель сама в себе )) народ спорит, придумывает, советует... )))
тему я не забросил. мои знакомые написали программу игры в гонки с помощью массивов. Массивы они использовали для отображение координат встречных машинок.
#include <LiquidCrystal.h> LiquidCrystal lcd (8,9,10,11,12,13) ; int bat_restart; int bat_left; int bat_right; int bat_up; int bat_down; int snake_x=0; int snake_y=0; int cars[100]; int cars_x[100]; int cars_y[100]; int now_cars=0; int need_cars=5+2; int timer=5; int score = 0; boolean game_over=false; boolean bullets[80]; int fire_x[80]; int fire_y[80]; int now_bullets=0; int current[20][4]; void clear_all(int cx[], int cy[]){ lcd.clear(); lcd.setCursor(snake_x,snake_y); lcd.print("X"); if(now_cars!=0){ for(int i=0;i<now_cars-1;i++){ lcd.setCursor(cars_x[i],cars_y[i]); lcd.print("0"); } } } void add_car(int x, int y){ now_cars+=1; cars[now_cars-1]=1; cars_x[now_cars-1]=21; cars_y[now_cars-1]=y; } void setup(){ for(int i=0;i<100;i++){ cars[i]=0; } pinMode(2, INPUT); //ВЛЕВО pinMode(3,INPUT); //ВПРАВО pinMode(4, INPUT); //ВВЕРХ pinMode(5,INPUT); //НИЗ pinMode(7,INPUT); //СТАРТ pinMode(0,OUTPUT); // Лампа lcd.begin(20,4); } void loop(){ bat_restart = digitalRead(7); bat_right = digitalRead(3); bat_left = digitalRead(2); bat_up = digitalRead(4); bat_down = digitalRead(5); /* Апдейт */ if(!game_over){ score+=1; for(int i=0;i<now_cars;i++){ if(cars_x[i]==snake_x && cars_y[i]==snake_y){ game_over = true; lcd.clear(); break; } } } if(!game_over){ if(timer>0){ timer-=1; }else if(timer>-5){ if(timer==-2){add_car(18,random(0,4));} timer-=2; } else{ timer=5; for(int i=0;i<now_cars;i++){ if(cars_x[i]<1){ cars[i]=0; now_cars-=1; for(int j=0;j<100;j++){ cars_x[i]=cars_x[i+1]; cars_y[i]=cars_y[i+1]; } }else{ cars_x[i]-=1; } } if(!game_over){ clear_all(cars_x,cars_y); } } /* УПРАВЛЕНИЕ */ delay(20); if(bat_right==HIGH){ if(snake_x<19){ snake_x+=1; clear_all(cars_x,cars_y); lcd.setCursor(snake_x+1,snake_y); delay(20); } } delay(20); if(bat_left==HIGH){ if(snake_x>0){ snake_x-=1; clear_all(cars_x,cars_y); lcd.setCursor(snake_x-1,snake_y); delay(20); } } delay(20); if(bat_up==HIGH){ if(snake_y>0){ snake_y-=1; clear_all(cars_x,cars_y); lcd.setCursor(snake_x,snake_y-1); delay(20); } } delay(20); if(bat_down==HIGH){ if(snake_y<3){ snake_y+=1; clear_all(cars_x,cars_y); lcd.setCursor(snake_x,snake_y+1); delay(20); } }}else{ lcd.setCursor(0,0); lcd.print("Game Over!"); lcd.setCursor(0,1); lcd.print("Your score: "); lcd.print(score/10); }}