Robię uczelniany projekt w C z użyciem ncurses i mam pytanie: czy da się tak przesunąć obiekt, żeby nie nadpisywał kolejnych znaków?
- Rejestracja:około 11 lat
- Ostatnio:4 miesiące
- Lokalizacja:Pomorskie (Stare Kabaty)
Z tego co pamiętam to tak. Musisz utworzyć okno.
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/windows.html
Dzięki za pomoc :) Udało mi się jakoś pokonać tę przeszkodę ale mam jeszcze jeden problem
Chcę zrealizować żeby każdy pieszy i samochód były wątkami, mam taki kod [na razie testowy] którego zadaniem jest sprawienie aby w jednym czasie kilku pieszych weszło na jezdnię, ale tylko jeden pieszy wchodzi na jezdnię, czy w tym kodzie jest błąd?
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <ncurses.h>
#include <string.h>
void rysuj_plansze(){
int i;
for(i=1;i<7;i++) mvprintw(i,6,"|");
for(i=0;i<6;i++) mvprintw(7,i,"-");
mvaddch(8,10,ACS_DIAMOND);
for(i=0;i<6;i++) mvprintw(9,i,"-");
for(i=10;i<16;i++) mvprintw(i,6,"|");
for(i=15;i<21;i++) mvprintw(7,i,"-");
for(i=15;i<21;i++) mvprintw(9,i,"-");
for(i=1;i<7;i++) mvprintw(i,14,"|");
for(i=10;i<16;i++) mvprintw(i,14,"|");
mvaddch(8,5,ACS_CKBOARD);
mvaddch(8,15,ACS_CKBOARD);
for(i=7;i<14;i++) mvaddch(5,i,ACS_CKBOARD);
for(i=7;i<14;i++) mvaddch(11,i,ACS_CKBOARD);
mvprintw(1,30,"Legenda:");
mvaddch(2,30,ACS_DIAMOND); mvprintw(2,33," wysepka");
mvaddch(3,30,ACS_CKBOARD); mvprintw(3,33," przejscie dla1 pieszych");
attron(A_BOLD); mvaddch(4,30,ACS_PI); attroff(A_BOLD); mvprintw(4,33," pieszy");
attron(A_BOLD); mvaddch(5,30,ACS_RARROW); attroff(A_BOLD); mvprintw(5,33," samochod");
}
void pieszy(){
int i;
srand(time(NULL));
int ktore_przejscie = 1 + rand() % 4;
switch(ktore_przejscie){
case 1:
for(i=6;i<11;i++){
mvaddch(i,5,ACS_PI);
refresh();
sleep(2);
clear();
rysuj_plansze();
}
break;
case 2:
for(i=5;i<16;i++){
mvaddch(5,i,ACS_PI);
refresh();
sleep(2);
clear();
rysuj_plansze();
}
break;
case 3:
for(i=6;i<11;i++){
mvaddch(i,15,ACS_PI);
refresh();
sleep(2);
clear();
rysuj_plansze();
}
break;
case 4:
for(i=5;i<16;i++){
mvaddch(11,i,ACS_PI);
refresh();
sleep(2);
clear();
rysuj_plansze();
}
break;
}
}
int main(){
pthread_t p1,p2,p3;
int i;
initscr();
curs_set(0);
noecho();
rysuj_plansze();
pthread_create(&p1,NULL,pieszy,NULL);
pthread_create(&p2,NULL,pieszy,NULL);
pthread_create(&p3,NULL,pieszy,NULL);
pthread_join(p1,NULL);
pthread_join(p2,NULL);
pthread_join(p3,NULL);
getch();
endwin();
return 0;
}
Mały Młot napisał(a):
Robię uczelniany projekt w C z użyciem ncurses i mam pytanie: czy da się tak przesunąć obiekt, żeby nie nadpisywał kolejnych znaków?
Treść projektu:
Symulator ronda (cztery kierunki jazdy + przejścia dla pieszych dla każdego kierunku) - (samochody i piesi) pojawiają się losowo z wybraną trasą. (każdy pojazd oraz pieszy) stanowi wątek lub proces (w zależności od wymagań danego projektu)
Środowisko:
Unix, język C, ncurses
Jakieś praktyczne wskazówki? (sorry że post pod postem)