Skip to content
Snippets Groups Projects
Commit d622f8c4 authored by KosmX's avatar KosmX :satellite_orbital:
Browse files

:D

parents
No related branches found
No related tags found
No related merge requests found
char.c 0 → 100644
#include<stdio.h>
int main(int argc, char const *argv[])
{
char c[8];
scanf("%c",)
return 0;
}
typedef struct block //struct stores 2 chars and it's color:D
{
int c1;
int c2;
struct{
int fg : 3;
int bg : 3;
}color;
}block;
\ No newline at end of file
#include<stdio.h>
map1.txt 0 → 100644
╔═══════╦═════════════════════════╗
║ ║ ║
║ ║ ║
║ ║ Hope it'll work ║
║ ║ ║
║ ║ ║
║ ╙─ ║
║ ║
║ ║
║ This is a box for snake ║
║ ║
║ ║
║ ════════════╗ ║
║ :D ║ ║
║ ║ ║
║ ║ ║
║ random ║
║ obstacles ║
║ ║
║ ║
║ ║
╚═════════════════════════════════╝
╔═══════╦═════════════════════════╗
║ ║ ║
║ ║ ║
║ ║ Hope it'll work ║
║ ║ ║
║ ║ ║
║ ╙─ ║
║ ║
║ ║
║ This is a box for snake ║
║ ║
║ ║
║ ════════════╗ ║
║ :D ║ ║
║ ║ ║
║ ║ ║
║ random ║
║ obstacles ║
║ ║
║ ║
║ ║
╚═════════════════════════════════╝
snake 0 → 100644
File added
snake.c 0 → 100644
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#define windows 1
//typedef unsigned long long int pointer; //Not optimal
int isUnicodeEncoding = 1;
typedef enum Direcion{
UP,
RIGHT,
DOWN,
LEFT,
}Direction;
typedef struct Vec2i{
int x;
int y;
}Pos;
typedef struct snakeChain
{
int num;
struct Vec2i pos;
struct snakeChain *next;
}snakeChain;
typedef union unichar{
int isUnicone : 1;
struct{
char c[4];
}bytes;
}unichar;
typedef struct chunk //struct stores 2 chars and it's color :D
{
unichar chars[2];
/*
struct{
int fg : 3; //3 bit color codes.
int bg : 3; //red green blue black white and 3 other (idk these)
}color;*/
}chunk;
typedef struct state{
struct Vec2i displaySize;
struct Vec2i displayPos;
int commands[2];
}globalState;
typedef struct linkedString{
unichar value;
struct linkedString *next;
}linkedString;
typedef struct chunkMatrix{
chunk **matrix;
int width;
int height;
}Matrix;
/**
* Only the first byte is required
*/
int checkUnicharLen(char c){
int i = 0;
if(!isUnicodeEncoding){
return 1; //int windows-xyzw every char has 1 len;
}
if(!(c & 0x80)){
return 1;
}
while(c & 0x80){
i++;
c = c << 1;
if(i > 8){
return EOF;
}
}
return i;
}
void printChar(unichar c){
int len;
len = checkUnicharLen(c.bytes.c[0]);
for(int i = 0; i < len; i++){
printf("%c", c.bytes.c[i]);
}
}
//fueoetoeoecsoeoe *next
int readFile(FILE *file, Matrix *matrix){
int c, len, maxLineLen = 0, lineCount = (3,1), lineLen = 0;
struct Vec2i pos;
pos.x = 0;
pos.y = 0;
linkedString *linkedStr = 0, *current = 0, *next;
//linkedStr = malloc(sizeof(linkedString));
while(c = fgetc(file)){
next = malloc(sizeof(linkedString));
if(next == NULL){
return EOF;
}
memset(next, 0, sizeof(linkedString)); //TODO remove after debugging
next->next = 0;
if(c == -1){
break;
}
while (c == '\r')
{
c = fgetc(file);
if(c == -1){
break;
}
}
next->value.bytes.c[0] = c;
len = checkUnicharLen(c);
if(isUnicodeEncoding && len -1){
for (int i = 1; i < len; i++){
c = fgetc(file);
if(c == -1){
return EOF;
}
next->value.bytes.c[i] = c;
}
}
else if(c == '\n'){ //checking newline (unichar can't be a newline char (\n))
lineCount++;
if(lineLen > maxLineLen){
maxLineLen = lineLen;
}
lineLen = -1;
}
lineLen++;
//next.value = chars;
if(current != 0){
current->next = next;
}
else
{
linkedStr = next;
//current = next;
}
current = next;
}
maxLineLen = maxLineLen / 2 + maxLineLen % 2;
matrix->height = lineCount;
matrix->width = maxLineLen;
matrix->matrix = calloc(maxLineLen, sizeof(chunk*));
if(matrix->matrix == NULL){
printf("failed to allocate memory for the matrix");
return EOF-1;
}
for (int i = 0; i < maxLineLen; i++){
matrix->matrix[i] = calloc(lineCount, sizeof(chunk));
if(matrix->matrix[i] == NULL){
printf("failed to allocate memory for the matrix");
return EOF-1;
}
for(int n = 0; n < lineCount; n++){
for(int a = 0; a < 2; a++){
matrix->matrix[i][n].chars[a].bytes.c[0] = ' ';
}
}
}
current = linkedStr;
while(current != 0){
//tmp = current;
//current = current->next;
//free(tmp);
if(current->value.bytes.c[0] == '\n'){
pos.x = 0;
pos.y++;
//break;
}
else{
for(int charPos = 0; charPos < 4; charPos++){
matrix->matrix[pos.x/2][pos.y].chars[pos.x%2].bytes.c[charPos] = current->value.bytes.c[charPos];
}
pos.x++;
}
next = current;
current = current->next;
free(next);
}
return 0;
}
void rmMatrix(Matrix *map){
for(int i = 0; i < map->width; i++){
free(map->matrix[i]);
}
free(map->matrix);
}
//------------TESTING METHODS-------------
void _testprint(Matrix *map){
for (int y = 0; y < map->height; y++){
for(int x = 0; x < map->width; x++){
for(int i = 0; i < 2; i++){
//printf("%c", map->matrix[x][y].chars->bytes.c[i * 4]); //WTF... I didn't indexed correctly, but accidentaly I've got the right value...
printChar(map->matrix[x][y].chars[i]);
}
//printf("|");
}
printf("\n");
}
}
void _print1char(Matrix *map){
int x, y;
while(scanf(" %d%d", &x, &y) == 2){
if(x >= 0 && y >= 0 && x < map->width && y < map->height){
for(int i = 0;i < 2; i++){
printf("\nvalue: %d, %d, %d, %d\n", map->matrix[x][y].chars[i].bytes.c[0], map->matrix[x][y].chars[i].bytes.c[1], map->matrix[x][y].chars[i].bytes.c[2], map->matrix[x][y].chars[i].bytes.c[3]);
printf("as character: \"");
printChar(map->matrix[x][y].chars[i]);
printf("\"\n");
}
}
}
}
//-------------CORE METHOD----------------
int core(int argc, char const *argv[])
{
FILE *f;
Matrix map;
if(argc == 1){
printf("Usage: snake <map name> [<snake skin>]");
return 0;
}
else{
f = fopen(argv[1], "rb");
if(f == NULL){
printf("Map file not found: %s", argv[1]);
return EOF;
}
readFile(f, &map);
}
//test code
printf("map:\n");
_testprint(&map);
//_print1char(&map);
/* code */
//free stuff
rmMatrix(&map);
return 0;
}
/*
int main(int argc, char const *argv[])
{
return core(argc, argv);
}
*/
int main(int argc, char const *argv[])
{
2 + 3;
int ret;
char const *array[] = {argv[0], "snake/map1.txt"};
ret = core(2, array);
printf("\npress any key to continue");
getchar();
return 0, ret; //Miért van ez a függvény tele szeméttel??? pl 0, smt...
}
\ No newline at end of file
snake.exe 0 → 100644
File added
File added
🍕🍔🥙🥟🥡🥡
asdasd
\ No newline at end of file
#include<stdio.h>
#include<stdlib.h>
int xp1(void)
{
unsigned long long int **map;
int a, b, c;
map = calloc(10, 8);
for(int i = 0; i < 10; i++){
map[i] = calloc(10, 8);
}
scanf("%d%d%d", &a, &b, &c);
map[a][b] = c;
scanf(" %d%d%d", &a, &b, &c);
map[a][b] = c;
scanf(" %d%d%d", &a, &b, &c);
map[a][b] = c;
for (int i = 0; i < 10; i++){
for (int n = 0; n < 10; n++){
printf(" %3d ", map[i][n]);
}
printf("\n");
}
return 0;
}
void xp2(void){
char c;
while(scanf("%c", &c) == 1){
printf("%c", c);
}
}
void xp3(){
printf("%c", 0x00);
}
int main(int argc, char const *argv[])
{
xp3();
return 0;
}
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment