Ncurses - pisanie bez nadpisywania znaków

0

Robię uczelniany projekt w C z użyciem ncurses i mam pytanie: czy da się tak przesunąć obiekt, żeby nie nadpisywał kolejnych znaków?

0

Z tego co pamiętam to tak. Musisz utworzyć okno.
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/windows.html

0

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;
}
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)

1 użytkowników online, w tym zalogowanych: 0, gości: 1