| CBNA Rebirth Days | |
|
+19[TheDarkTiger] morgan arthuro Is Daouda Chlorodatafile Asu Uubu red-error BuzzJeux glcraft Craki Linky439 hyper Térence Rem_101 Mass D-z onilink_ Mobi 23 participants |
|
Auteur | Message |
---|
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Ven 25 Sep 2015 - 17:28 | |
| Je note, j'y avais fait en salle info quand j'avais une heure de perm à rien faire, et l'internet était si pourri que j'ai attendu 5 minutes pour ouvrir cpp.sh donc c'était impossible de voir la doc huhu _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Sam 3 Oct 2015 - 0:12 | |
| |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1482 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: CBNA Rebirth Days Sam 3 Oct 2015 - 1:22 | |
| Tu prépare un simulateur de nichoirs d'oiseaux ? C'est pour Planet Centauri ? |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Sam 3 Oct 2015 - 9:21 | |
| - arthuro a écrit:
- Tu prépare un simulateur de nichoirs d'oiseaux ?
C'est pour Planet Centauri ? Ça en a l'air, élever des piafs ça peut être utile _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: CBNA Rebirth Days Sam 3 Oct 2015 - 9:45 | |
| On veut des pouleeeets \o/ Plus sérieusement, vraiment pas mal comme d'hab, on voit bien que c'est du bois _________________ côt.
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Sam 3 Oct 2015 - 10:10 | |
| - arthuro a écrit:
- Tu prépare un simulateur de nichoirs d'oiseaux ?
C'est pour Planet Centauri ? Héhé yep, par contre ce sera pour plus tard car j'ai pas encore programmé les IA des piafs |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Lun 5 Oct 2015 - 13:29 | |
| Petite implentation d'un algorithme de raster de triangles en C++. On peut définir le caractère affiché dans la console, la taille et les coord de chaque vertex du triangle. Fait en moins de deux heures au lycée avec cpp.sh o/ - Code:
-
#include <iostream> #include <math.h> #include <vector> #include <algorithm>
struct vec2f { float x, y; };
struct triangle { vec2f vt1, vt2, vt3; };
class rasterizer { public: /// Defines the size of the rendering output. void defineSize(const float width, const float height) { wid = width; hei = height; } /// Raster a triangle virtual void rasterTriangle(triangle tri) = 0; /// Returns a pixel's data (depends on the output type, usually 3 RGB / 1 char) virtual void* getPixelData(vec2f pos) = 0;
private: float wid, hei; };
/// Returns the cross product of two 2D vectors float crossProduct(const vec2f a, const vec2f b) { return (a.x * b.y) - (a.y * b.x); }
class softRasterizer : rasterizer { public: softRasterizer(const float width, const float height) { defineSize(width, height); grid.resize(width); for (auto& row : grid) { row.resize(height); for (auto& pix : row) { pix = ' '; } } } /// Sets the character used to fill pixels in a triangle void setFillingCharacter(const char fill) { fillChar = fill; } /// Returns a character in the grid @TODO : Move to rasterizer class? void* getPixelData(vec2f pos) { return &grid[pos.x][pos.y]; } /// Raster a triangle using the Barycentric algorithm. void rasterTriangle(triangle tri) { using namespace std; const vec2f vt1 = tri.vt1, vt2 = tri.vt2, vt3 = tri.vt3; auto xcoord = std::minmax({vt1.x, vt2.x, vt3.x}); auto ycoord = std::minmax({vt1.y, vt2.y, vt3.y}); vec2f tl = { xcoord.first, ycoord.first }; vec2f br = { xcoord.second, ycoord.second }; vec2f vs1 = { vt2.x - vt1.x, vt2.y - vt1.y }; vec2f vs2 = { vt3.x - vt1.x, vt3.y - vt1.y }; for (int x = tl.x; x <= br.x; ++x) { for (int y = tl.y; y <= br.y; ++y) { vec2f q = { x - vt1.x, y - vt1.y }; float c = crossProduct(vs1, vs2); float s = crossProduct(q, vs2) / c; float t = crossProduct(vs1, q) / c; if ((s >= 0) && (t >= 0) && (s + t <= 1)) { grid[x][y] = fillChar; } } } } /// Renders the grid to the console. void renderConsole() { for (unsigned j = 0; j < grid.size(); ++j) { for (unsigned i = 0; i < grid[0].size(); ++i) { std::cout << grid[i][j]; } std::cout << std::endl; } } private: char fillChar = 'O'; std::vector<std::vector<char>> grid; };
int main() { std::cout << "Preparing the rasterizer" << std::endl; softRasterizer raster(75, 75); std::cout << "Rasterizing triangles" << std::endl; raster.setFillingCharacter('@'); raster.rasterTriangle( { {5, 5}, {25, 65}, {60, 35} } ); std::cout << "Console rendering..." << std::endl; raster.renderConsole(); return EXIT_SUCCESS; } Des améliorations à faire? Exemple de sortie : - Code:
-
Preparing the rasterizer Rasterizing triangles Console rendering... @ @ @@@ @@@@@ @@@@@@ @@@@@@@@ @@@@@@@@@@ @@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@ @@@@@@@ @@@@@@ @@@@@ @@@ @@ @ _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Lun 5 Oct 2015 - 14:51 | |
| Ouai, ajoutes l'antialiasing :p |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: CBNA Rebirth Days Lun 5 Oct 2015 - 15:25 | |
| C'est les gens sous linux qui vont être contents ! |
|
| |
Uubu Bavard
Messages : 102
| |
| |
hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: CBNA Rebirth Days Mer 7 Oct 2015 - 19:30 | |
| C'est pour Dope TrashCanners j'imagine ? _________________ côt.
|
|
| |
Uubu Bavard
Messages : 102
| Sujet: Re: CBNA Rebirth Days Mer 7 Oct 2015 - 19:31 | |
| Ouaip' :'D _________________
|
|
| |
hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: CBNA Rebirth Days Mer 7 Oct 2015 - 19:32 | |
| Très sympa en tout cas _________________ côt.
|
|
| |
Uubu Bavard
Messages : 102
| |
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Mer 7 Oct 2015 - 20:10 | |
| Pas mal du tout ces petites anims :p J'aime beaucoup les spéculaires du tonneau, ça donne bien du volume. |
|
| |
Linky439 Utilisateur confirmé: Rang *****
Messages : 2643 Localisation : Sur le forum du CBNA...ou pas Projet Actuel : La Galaxie Scellée
| Sujet: Re: CBNA Rebirth Days Mer 7 Oct 2015 - 20:21 | |
| Joli, en effet _________________ Cliquez pour accéder aux topics dédiés ! |
|
| |
Invité Invité
| Sujet: Re: CBNA Rebirth Days Mer 7 Oct 2015 - 20:57 | |
| tà_t à cçàp je veux rejouer a doom |
|
| |
Uubu Bavard
Messages : 102
| Sujet: Re: CBNA Rebirth Days Jeu 8 Oct 2015 - 9:27 | |
| Merci les gars. :'D _________________
|
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Jeu 8 Oct 2015 - 10:37 | |
| Classe d'automate cellulaire facile à utiliser, exemple de moteur de liquide s'écoulant à l'infini très simpliste : - Code:
-
#include <iostream> #include <queue> #include <vector>
typedef std::vector<std::vector<char>> char2D;
struct pos2D { int x, y; };
struct queuedAction { pos2D pos; char assignedValue; };
class cellularAutomata { public: cellularAutomata(const unsigned wid, const unsigned hei) { vec.resize(wid); for (auto& i : vec) { i.resize(hei); } } void update() { for (unsigned i = 0; i < vec.size(); ++i) { for (unsigned j = 0; j < vec[i].size(); ++j) { this->updateCell({(int)i, (int)j}); } } flushQueues(); } virtual void updateCell(pos2D pos) = 0; void flushQueues() { while (!actqueue.empty()) { queuedAction actiondata = actqueue.front(); actqueue.pop(); if (actiondata.pos.x >= 0 && actiondata.pos.x <= vec.size() && actiondata.pos.y >= 0 && actiondata.pos.y <= vec[0].size()) { vec[actiondata.pos.x][actiondata.pos.y] = actiondata.assignedValue; } } } std::vector<char>& operator[](int index) { return vec[index]; } void renderConsole() { for (unsigned x = 0; x < vec.size(); ++x) { for (unsigned y = 0; y < vec.size(); ++y) { // Somehow indexes are mixed up, need to invert x and y. // @TODO : Fix this to use C++11 range-based loops. std::cout << ((vec[y][x] == 0) ? ' ' : char(vec[y][x] + 48)); } std::cout << std::endl; } } protected: std::queue<queuedAction> actqueue; char2D vec; };
class liquidAutomata : public virtual cellularAutomata { public: liquidAutomata(const unsigned wid, const unsigned hei) : cellularAutomata(wid, hei) {} std::vector<pos2D> getDiffuseSpots(pos2D pos) { std::vector<pos2D> diffuseSpots; if (vec[pos.x][pos.y + 1] != SOLID) { diffuseSpots.push_back({pos.x, pos.y + 1}); } else { if (vec[pos.x + 1][pos.y] != SOLID) diffuseSpots.push_back({pos.x + 1, pos.y}); if (vec[pos.x - 1][pos.y] != SOLID) diffuseSpots.push_back({pos.x - 1, pos.y}); } return diffuseSpots; } void updateCell(pos2D pos) { if (vec[pos.x][pos.y] == LIQUID) { std::vector<pos2D> diffuseSpots = getDiffuseSpots(pos); for (auto& i : diffuseSpots) { actqueue.push({{i.x, i.y}, LIQUID}); } } } enum celltypes { NONE = 0, LIQUID = 1, SOLID = 2 }; };
int main() { liquidAutomata ca(10, 10); for (unsigned i=2; i<8; ++i) ca[i][6] = liquidAutomata::SOLID; ca[6][6] = liquidAutomata::NONE; ca[2][2] = liquidAutomata::LIQUID; for (unsigned long tick = 0; tick < 15; ++tick) { std::cout << std::endl << "Current iteration : " << tick << std::endl; ca.update(); ca.renderConsole(); } return EXIT_SUCCESS; } Exemple de rendu : - Code:
-
Current iteration : 0 1 1 2222 2
Current iteration : 1 1 1 1 2222 2
Current iteration : 2 1 1 1 1 2222 2
Current iteration : 3 1 1 1 111 2222 2
Current iteration : 4 1 1 1 1111 12222 2
Current iteration : 5 1 1 1 11111 12222 2 1
Current iteration : 6 1 1 1 111111 12222 2 1 1
Current iteration : 7 1 1 1 111111 1222212 1 1 1
Current iteration : 8 1 1 1 111111 1222212 1 1 1 1
Current iteration : 9 1 1 1 111111 1222212 1 1 1 1 1
Current iteration : 10 1 1 1 111111 1222212 1 1 1 1 1 1
Current iteration : 11 1 1 1 111111 1222212 1 1 1 1 1 1
Current iteration : 12 1 1 1 111111 1222212 1 1 1 1 1 1
Current iteration : 13 1 1 1 111111 1222212 1 1 1 1 1 1
Current iteration : 14 1 1 1 111111 1222212 1 1 1 1 1 1 Y'a quoi à améliorer côté code? \o _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Jeu 8 Oct 2015 - 10:39 | |
| Déjà utiliser un vector de vector c'est une très mauvaise idée côté optimisation de la mémoire cache. |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Jeu 8 Oct 2015 - 10:40 | |
| - onilink_ a écrit:
- Déjà utiliser un vector de vector c'est une très mauvaise idée côté optimisation de la mémoire cache.
Il faut utiliser quoi du coup? Un tableau statique m'aurait pas mal restreint _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Jeu 8 Oct 2015 - 10:42 | |
| Un vector tout court, et faire les accès avec le fameux [x + y*wid].
Faut bien comprendre qu'un vector contiens un bout de mémoire continue, par contre un vector de vector contiens N bouts de mémoire, donc c'est discontinu et c'est très mauvais pour le cache.
Le plus simple ça reste de se faire une petite classe template style Array2d avec deux paramètres templates: -le premier: le type que doit contenir la classe -le deuxieme: si la mémoire doit être continue ou segmentée
Ça te fera bosser sur les templates comme ça (qui sont tout l’intérêt du C++). |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Jeu 8 Oct 2015 - 10:45 | |
| |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Jeu 8 Oct 2015 - 10:48 | |
| Huhu, je sens que je vais m'amuser x) Je vais tester ça ce soir ou demain _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Lun 12 Oct 2015 - 15:26 | |
| Vu que le masochisme c'est cool, j'ai fait une petite algo de game of life sur... algobox. - Code:
-
GOL - 12.10.2015
******************************************
******************************************
1 VARIABLES 2 i EST_DU_TYPE NOMBRE 3 X EST_DU_TYPE NOMBRE 4 Y EST_DU_TYPE NOMBRE 5 neighbor EST_DU_TYPE NOMBRE 6 size EST_DU_TYPE NOMBRE 7 gol EST_DU_TYPE LISTE 8 push EST_DU_TYPE LISTE 9 pushsz EST_DU_TYPE NOMBRE 10 pop EST_DU_TYPE LISTE 11 popsz EST_DU_TYPE NOMBRE 12 j EST_DU_TYPE NOMBRE 13 it EST_DU_TYPE NOMBRE 14 DEBUT_ALGORITHME 15 LIRE it 16 LIRE size 17 POUR i ALLANT_DE 0 A size*size 18 DEBUT_POUR 19 gol[i] PREND_LA_VALEUR round(random()) 20 FIN_POUR 21 POUR i ALLANT_DE 0 A it 22 DEBUT_POUR 23 POUR X ALLANT_DE 1 A (size-2) 24 DEBUT_POUR 25 POUR Y ALLANT_DE 1 A (size-2) 26 DEBUT_POUR 27 SI (gol[X + (Y*size)]) ALORS 28 DEBUT_SI 29 AFFICHER "O" 30 FIN_SI 31 SINON 32 DEBUT_SINON 33 AFFICHER " " 34 FIN_SINON 35 neighbor PREND_LA_VALEUR gol[(X-1) + ((Y-1)*size)] + gol[(X-1) + (Y*size)] + gol[(X-1) + ((Y+1)*size)] + gol[X + ((Y-1)*size)] + gol[X + ((Y+1)*size)] + gol[(X+1) + ((Y-1) * size)] + gol[(X+1) + (Y*size)] + gol[(X+1) + ((Y+1)*size)] 36 SI (gol[X + (Y*size)] != 1) ALORS 37 DEBUT_SI 38 SI (neighbor == 3) ALORS 39 DEBUT_SI 40 push[pushsz] PREND_LA_VALEUR X + (Y*size) 41 pushsz PREND_LA_VALEUR pushsz + 1 42 FIN_SI 43 FIN_SI 44 SINON 45 DEBUT_SINON 46 SI ((neighbor != 2) ET (neighbor != 3)) ALORS 47 DEBUT_SI 48 pop[popsz] PREND_LA_VALEUR X + (Y*size) 49 popsz PREND_LA_VALEUR popsz + 1 50 FIN_SI 51 FIN_SINON 52 FIN_POUR 53 AFFICHER " " 54 FIN_POUR 55 //Flush the push list 56 POUR j ALLANT_DE 0 A pushsz 57 DEBUT_POUR 58 gol[push[j]] PREND_LA_VALEUR 1 59 FIN_POUR 60 pushsz PREND_LA_VALEUR 0 61 //Flush the pop list 62 POUR j ALLANT_DE 0 A popsz 63 DEBUT_POUR 64 gol[pop[j]] PREND_LA_VALEUR 0 65 FIN_POUR 66 popsz PREND_LA_VALEUR 0 67 AFFICHER "Itération " 68 AFFICHER i 69 FIN_POUR 70 FIN_ALGORITHME Petite compilation de raisons pourquoi je haïs algobox actuellement : - La gestion des erreurs est complétement pourrie, les trois quart des erreurs se limiteront à afficher "Erreur de calcul" lorsqu'on dépasse la taille d'un tableau...
- Le débogage est pas pratique
- Si on enregistre une algo, même en mode texte, qu'on l'enregistre et qu'on la recharge, le code va redevenir une algorithme utilisant l'interface pas pratique d'algobox à la souris et on ne peut plus retourner en mode texte sans quoi on doit recoder l'algorithme de zéro
- La sortie de l'algorithme vers du texte est stupide, pourquoi liste-il les lignes?
- Impossible de faire des tableaux, on doit utiliser des listes normales et multiplier le deuxième index pour parvenir à ce qu'on veut faire, voir mon algo ci-dessus
- x EST_DU_TYPE NOMBRE? Sérieux?
- x PREND_LA_VALEUR 5? Sérieux?
- Le listage de variables n'est pas du tout naturel
- Faire sa propre fonction qui ne se résume pas à être un seul calcul est impossible
- Très lent, surtout la sortie du texte vers la console.
- J'en laisse passer pas mal d'autres...
_________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: CBNA Rebirth Days Lun 12 Oct 2015 - 16:50 | |
| J'ai un peu la même réaction allergique quand je vois du GML |
|
| |
hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: CBNA Rebirth Days Mer 14 Oct 2015 - 20:17 | |
| - onilink_ a écrit:
- J'ai un peu la même réaction allergique quand je vois du GML
Arrête de faire ton anti-GM , j'utilise que ça pour l'instant (régulièrement en tout cas), on peut faire des bons petits jeux avec. La preuve : le concours #06 a pour gagnant... ok je me tais Pour répondre à Asu, oui, Algobox c'est très... orienté débutant en programmation _________________ côt.
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: CBNA Rebirth Days Mer 14 Oct 2015 - 20:29 | |
| JE SUIS PAS D'ACCORD, LE JAVA C'EST TRES BIEN !
Ah pardon, on dénigrait un langage, j'ai crû que c'était java. _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: CBNA Rebirth Days Mer 14 Oct 2015 - 20:30 | |
| |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: CBNA Rebirth Days Jeu 15 Oct 2015 - 10:50 | |
| Petite classe d'array à deux dimensions, avec quelques méthodes, que je compléterai plus tard : - Code:
-
#include <iostream> #include <stdexcept> #include <ctime>
struct vec2D { float x, y; };
template <typename T, size_t sz> class arrayRow { public: arrayRow(T* vdata) : vec_data(vdata) {}
T& operator[](const unsigned i) { if (i >= sz) throw std::out_of_range("arrayRow (from array2D)"); return (vec_data[i]); } unsigned size() const { return sz; }
private: T* vec_data; };
template <typename T, size_t sz> class array2D { public: array2D() { vec_data = new T[realsz]; } arrayRow<T, sz> operator[](const unsigned i) { if (i >= sz) throw std::out_of_range("array2D"); return arrayRow<T, sz>(&vec_data[i * sz]); } unsigned size() const { return sz; } private: T* vec_data; const int realsz = sz*sz; };
int main() { srand(time(NULL)); array2D<char, 15> array; for (unsigned i = 0; i < array.size(); ++i) { for (unsigned j = 0; j < array[i].size(); ++j) { array[i][j] = '0' + (rand() % 9); } }
for (unsigned i = 0; i < array.size(); ++i) { for (unsigned j = 0; j < array[i].size(); ++j) { std::cout << array[i][j]; } std::cout << std::endl; } } Si le code est pas trop dégueu, je pense l'utiliser dans mon champ vectoriel _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
Contenu sponsorisé
| Sujet: Re: CBNA Rebirth Days | |
| |
|
| |
| CBNA Rebirth Days | |
|