Convert Prog em visual c for linux

1. Convert Prog em visual c for linux

Mistery
Cmistry

(usa Ubuntu)

Enviado em 20/01/2020 - 00:05h

Tenho esse script que compilei no visual c e preciso ajudar de vcs para compila no Linux, pode ser utilizado curses.h importante é roda.
Tudo isso pra uma animação de uns mapinhas!
#pragma once
#include "console.h"
class Text{
public:
Text();
~Text();
int checkTimer(int);
void showText(int);
void display(const char**, const char**);
void display(const char**, const char**, const char**, const char**);
};

#pragma once
#include "console.h"
/******************* ALGODÃO *****************/
class Fireworks{
private:
int V; //velocidade
int xThanhPho = MAX_X/3,
yThanhPho = MAX_Y/1.5;
public:
Fireworks();
~Fireworks();
void start(int, int); //cria um novo canhão
int check(int, int); //verifica se há conteúdo duplicado
void init_new_FW(int, int&, int&);//cria um canhão quando se move, apaga o antigo
void delete_FW(int, int); //Limpar o canhão no local de nascimento
void move_FW(int, int, int); //move o canhão para o ar
void display_FW(int, int, int);//explodir
};
void display(int, int, int*, int, int, int);
void del(int, int, int, Fireworks, int);
void del_screen(int, int);
int random(int, int);

#include "console.h"
//Função para alterar o tamanho do quadro cmd. 800, 600
void ResizeConsole(int width, int height){
HWND console = GetConsoleWindow();
RECT r;
GetWindowRect(console, &r);
MoveWindow(console, r.left, r.top, width, height, TRUE);
}
//Função de coloração.
void Textcolor(int x){
HANDLE cor;
cor = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(cor, x);
}
//Função move o cursor para as coordenadas x, y.
void gotoXY(int x, int y){
HANDLE hConsoleOutput;
COORD Cursor_an_Pos = {x-1,y-1};
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput, Cursor_an_Pos);
}
// Ocultar cursor da tela
void HideCursor(){
HANDLE hOut;
CONSOLE_CURSOR_INFO ConCurInf;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
ConCurInf.dwSize = 10;
ConCurInf.bVisible = FALSE;
SetConsoleCursorInfo(hOut, &ConCurInf);
}

Pesei coisas como
void movexy(int x, int y)
{
printf("\33[%d;%dH",y,x);
}

E remove partes como 'oculta curso da tela'.
#pragma once
#define _WIN32_WINNT 0x0500
#include <Windows.h>
#include <conio.h>
#include <iostream>
#include <time.h>
#include <random>
#include <thread>

//DEFINE SIZE (aplica-se ao ampliar a tela)
#define MAX_Y 38 //y vertical, alto (na verdade 39, mas deve ser reduzido em 1 unidade)
#define MAX_X 168 //x horizontal, largo
#define MIN 1
#define LINE_DISPLAY 15
#define MAX_N 5
#define CENT_MIN MAX_X/6 //1 dos primeiros 6 -> MIN -> MAX_X / 6
#define CENT_MAX MAX_X*5/6 //2/3 próximo -> MAX_X / 6 -> MAX_X * 5/6
//1 dos últimos 6 -> MAX_X * 5/6 -> MAX_X
using namespace std;
void ResizeConsole(int, int);
void Textcolor(int);
//void gotoXY(int, int);
void HideCursor();

/* Console

(0,0) o---------------------> (x)
|
|
|
|
|
v (y)
*/



  


2. Re: Convert Prog em visual c for linux

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/01/2020 - 21:53h

Você não mostrou muito da implementação, para que dê para saber exatamente quais operações você vai precisar converter, e eu estou longe de ser um conhecedor da API WIN32 ou mesmo um perito na biblioteca Curses para saber como mapear as operações de um sistema no outro.

Pelo pouco que você mostrou (e mais ainda porque você inseriu <conio.h> junto com as APIs do Windows), pareceu-me — mas reconheço que posso estar redondamente engando, já que muito pode estar escondido nas partes que você não mostrou — que você vai executar somente operações de baixo nível, tais como limpar tela, mover cursor, trocar cor e dispor alguns caracteres na tela. Não me pareceu que você vai usar operações tais como definir regiões da tela que não interfiram com as outras, painéis, menus ou que esteja preocupado com operações que façam uso de recursos específicos da Curses. Se for esse realmente o caso, você pode se safar apenas com recursos de Terminfo/Termcap, e a mensagem que eu postei como resposta para o tópico https://www.vivaolinux.com.br/topico/C-C++/Cores-terminal-Linux pode lhe dar algumas ideias de como fazer.

Mas uma coisa específica que eu vi no código da sua postagem é que a chamada MoveWindow() parece ser usada para trocar o tamanho da janela. Fazer isso no mundo UNIX pode ser bem mais complicado do que no Windows, e o quanto mais complicado vai depender de qual emulador de terminal estiver em uso.

O xterm, velho de guerra, possui sequências de escape específicas para trocar o tamanho da janela (medida em pixels, a saber "\x1b[4;largura;alturat") e da área de texto dentro da janela (medida em caracteres, a saber "\x1b[8;largura;alturat"). Essas mesmas sequências aparentemente funcionam sempre no gnome-terminal, sem a necessidade de ajustar parâmetro nenhum. No konsole, apenas a sequência que muda o tamanho medido em caracteres é reconhecida, só que ela só provoca o redimensionamento lógico da janela de texto, sem afetar o tamanho visível da janela que contém o texto. A única forma que eu vi de fazer com que o terminal seja alterado é através de uma sequência de instruções enviadas ao terminal via DBUS. Outros emuladores de terminal, terminais físicos, terminais virtuais locais ou via rede possivelmente não têm recursos semelhantes.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


3. Re: Convert Prog em visual c for linux

Mistery
Cmistry

(usa Ubuntu)

Enviado em 28/01/2020 - 19:40h


paulo1205 escreveu:

Você não mostrou muito da implementação, para que dê para saber exatamente quais operações você vai precisar converter
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


Meu perdões! Aqui todo projeto...
http://www.mediafire.com/file/s1gdeve76ckbjjm/ConsoleApplication2.rar/file

E aqui um curto vídeo de 30sec dele rodando.
https://youtu.be/4FmvMEGc7HI

Edit: tiver que atualizar o link do vídeo pois o antigo acabou quebrado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts