示例#1
0
void printPuzzle(Puzzle *puzzle) {
    int i, j, size = puzzle->size;
    printf("\n\nDificulty: %d x %d\n", size, size);
    printf("Shuffles: %d\n\n", shuffleCount);
    
    printBorder(size);
    
    for (i = 0; i < size; i++) {
        printf("%5c#|", ' ');
        for (j = 0; j < size; j++) {
            if(puzzle->matrix[i][j] == 0) {
                if(puzzle->inverted)
                    printf("%2c", ' ');
                else
                    printf("%2d", 0);
            } else {
                printf("%2d", puzzle->matrix[i][j]);
            }
            printf("|");
        }
        printf("#\n");
    }
    
    printBorder(size);
    printMenu();
    
    if(showSolution && puzzle->solution->size > 0)
        printSolution(puzzle->solution);
}
示例#2
0
void Panel::draw(Graphics &g, int left, int top, int _layer)
{

	if (isVisible)
	{
		if (layer == _layer)
			printBorder(g, left, top, _layer);
		else
		{
			for (vector<Control*>::iterator it = items.begin(); it != items.end(); it++)
				(*it)->draw(g, (*it)->getStartX(), (*it)->getStartY(), _layer);
		}
	}
	if (getGlobalInFocus()->getCursorVisibility() == true)
		g.moveTo(getGlobalInFocus()->getCursorX(), getGlobalInFocus()->getCursorY());
	else
		g.setCursorVisibility(false);
}
示例#3
0
int RecordManager::print_select_record(char* tableName, Node* def, vector<CursePair>& curseTable)
{
	string filename(tableName);
	filename+=".db";

	load_file(filename);
	assignColumnName(def);
	// print title
	int* tableLen = new int[m_header.columnCount];
	for (int i = 0; i < m_header.columnCount; ++i)
	{
		int maxlen = strlen(m_header.columnName[i]);
		if (m_header.columnType[i] == VAL_INT)
			maxlen = (maxlen > 10) ? maxlen : 10;
		else if (m_header.columnType[i] == VAL_FLOAT)
			maxlen = (maxlen > 8) ? maxlen : 8;
		else
			maxlen = (maxlen > m_header.columnLength[i]) ? maxlen : m_header.columnLength[i];

		tableLen[i] = maxlen; 
	}

	// TO-DO
	// print title
	printBorder(tableLen, m_header.columnCount);
	// print column name
	for (int i = 0; i < m_header.columnCount; ++i)
	{
		putchar('|');
		cout.width(tableLen[i]);
		cout <<m_header.columnName[i];
	}
	putchar('|');
	putchar('\n');
	printBorder(tableLen, m_header.columnCount);
	// print data
	for (auto it:curseTable)
	{
		unsigned char* blockPtr =m_bufInstance->getblock(m_currentPage, it.first,BUFFER_FLAG_NONDIRTY)+it.second;
		for (int i = 0; i < m_header.columnCount; ++i)
			{
				putchar('|');
				cout.width(tableLen[i]);
				if (m_header.columnType[i] == VAL_CHAR)
				{
					cout <<blockPtr;
				}
				else if (m_header.columnType[i] == VAL_FLOAT)
				{
					cout <<*(float*)blockPtr;
				}
				else
				{
					cout <<*(int*)blockPtr;
				}
				blockPtr += m_header.columnLength[i];
			}
		putchar('|');
		putchar('\n');
	}
	printBorder(tableLen, m_header.columnCount);

	delete [] tableLen;
	write_back();
	return 0;
}
示例#4
0
int RecordManager::print_all_record(char* tableName, Node* def)
{
	string filename(tableName);
	filename+=".db";

	load_file(filename);
	assignColumnName(def);

	int* tableLen = new int[m_header.columnCount];
	for (int i = m_header.columnCount-1; i >=0 ; --i)
	{
		int maxlen = strlen(m_header.columnName[i]);
		if (m_header.columnType[i] == VAL_INT)
			maxlen = (maxlen > 11) ? maxlen : 11;
		else if (m_header.columnType[i] == VAL_FLOAT)
			maxlen = (maxlen > 8) ? maxlen : 8;
		else
			maxlen = (maxlen > m_header.columnLength[i]) ? maxlen : m_header.columnLength[i];

		tableLen[i] = maxlen; 
	}

	// print title
	printBorder(tableLen, m_header.columnCount);
	// print column name
	for (int i = 0; i < m_header.columnCount; ++i)
	{
		putchar('|');
		cout.width(tableLen[i]);
		cout <<m_header.columnName[i];
	}
	putchar('|');
	putchar('\n');
	printBorder(tableLen, m_header.columnCount);

	// print data
	// TO-DO test
	int blockNo = 0;
	unsigned char* blockHead = m_bufInstance->getblock(m_currentPage, 0, BUFFER_FLAG_NONDIRTY);
	unsigned char* blockPtr = blockHead + m_header.headerLength;
	unsigned char* blockFlagPtr = blockPtr + m_header.valLength;
	for (int j = m_header.entryCount; j > 0;)
	{
		if (*(int*)blockFlagPtr < 0)
		{
			for (int i = 0; i < m_header.columnCount; ++i)
			{
				putchar('|');
				cout.width(tableLen[i]);
				if (m_header.columnType[i] == VAL_CHAR)
				{
					cout <<blockPtr;
				}
				else if (m_header.columnType[i] == VAL_FLOAT)
				{
					cout <<*(float*)blockPtr;
				}
				else
				{
					cout <<*(int*)blockPtr;
				}
				blockPtr += m_header.columnLength[i];
			}
			putchar('|');
			putchar('\n');
			--j;
		}
		blockPtr = (blockFlagPtr+sizeof(int));
		blockFlagPtr += (m_header.valLength+sizeof(int));
		if ((blockPtr) > (blockHead+BLOCK_SIZE))
		{
			blockHead = m_bufInstance->getblock(m_currentPage, ++blockNo, BUFFER_FLAG_NONDIRTY);
			blockPtr = blockHead;
			blockFlagPtr = blockHead + m_header.valLength;
		}
	}
	printBorder(tableLen, m_header.columnCount);

	delete [] tableLen;
	write_back();
	return 0;
}
示例#5
0
void 	Window::takeSize(void)
{
	getmaxyx(m_win, m_sizey, m_sizex);
	printBorder();
}