π
<-

nKaruga

C, C++, ASM...

Re: nKaruga

Unread postby matref » 21 May 2014, 00:44

Bump,

Vu qu'au fur et à mesure du développement, je commençais à être de l'avis de AnToX98 concernant la taille des sprites, j'ai fait quelques essais en utilisant les sprites rétrécis à la moitié de leur taille originale (jusqu'à maintenant, ils étaient diminués d'un quart de leur taille). Qu'est-ce que vous préférez ?

3/4 de la taille :
Image

1/2 de la taille :
Image
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: nKaruga

Unread postby Adriweb » 21 May 2014, 01:48

1/2 looks good.
What about 3/5 ? :troll:
(Quoique, sérieusement...)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.2%
 
Posts: 14779
Images: 1123
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: nKaruga

Unread postby matref » 21 May 2014, 05:50

T'arrêtes de faire chier toi ? :troll:

Sérieusement, j'ai opté pour un tout petit peu plus que 1/2, et le créateur est en train de travailler dessus direct à cette taille (pas de redimensionnement nécessaire), donc ça devrait être plus joli.
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: nKaruga

Unread postby AnToX98 » 21 May 2014, 06:50

Ah mais c'est parfait maintenant :D
User avatar
AnToX98Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 75.5%
 
Posts: 1022
Images: 15
Joined: 19 May 2013, 16:54
Location: Paris, France
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ere S

Re: nKaruga

Unread postby Adriweb » 21 May 2014, 09:46

matref wrote:Sérieusement, j'ai opté pour un tout petit peu plus que 1/2

Hé ben voilà, c'est ce que je demandais :D

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.2%
 
Posts: 14779
Images: 1123
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: nKaruga

Unread postby matref » 21 May 2014, 12:54

AnToX98 wrote:Ah mais c'est parfait maintenant :D

Je trouve que c'est trop petit, du coup j'ai demandé un touuuuut peuti peu plus grand que 1/2 :D

Adriweb wrote:
matref wrote:Sérieusement, j'ai opté pour un tout petit peu plus que 1/2

Hé ben voilà, c'est ce que je demandais :D

Non, parce que c'est un peu plus que 1/2 et un peu moins que 3/5 :troll:
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: nKaruga

Unread postby matref » 25 May 2014, 17:24

Alors en attendant les nouveaux sprites, j'ai commencé à recréer le premier niveau du Ikaruga original :

Image

Franchement, je m'attendais pas à devoir faire des polynômes du 2nd et 3ème degré pour les trajectoires.
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: nKaruga

Unread postby AlexRider38 » 25 May 2014, 19:37

matref wrote:Franchement, je m'attendais pas à devoir faire des polynômes du 2nd et 3ème degré pour les trajectoires.

:P
Donald Knuth wrote:
Beware of bugs in the above code; I have only proved it correct, not tried it.
User avatar
AlexRider38Généreux
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 68.5%
 
Posts: 650
Images: 0
Joined: 03 Nov 2010, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile

Re: nKaruga

Unread postby Hayleia » 30 May 2014, 07:31

Peut-on voir le code de la nouvelle routine de rotation de sprite ?

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
User avatar
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 43.8%
 
Posts: 2509
Images: 2
Joined: 30 Aug 2011, 08:22
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Templar

Re: nKaruga

Unread postby matref » 30 May 2014, 10:15

Ouais bien sûr. Il faut savoir que ça dessine le sprite en question tourné, ça ne fait pas comme rotozoomSurface. "sr" est la SDL_Rect dont les composantes X et Y sont où dessiner le milieu du sprite :
Code: Select all
#include <SDL.h>
// Fixed
// 24.8 fixed point
#define itofix(x) ((x) << 8)
#define fixtoi(x) ((x) >> 8)
#define fixmul(x, y) ((x) * (y) >> 8)
#define fixdiv(x, y) (((x) << 8) / (y))

#define fixsin(x) fixcos((x) - 64)

Fixed fixcos(Fixed angle)
{
   static Fixed cosLUT[] = { 256, 255, 255, 255, 254, 254, 253, 252, 251, 249, 248, 246, 244, 243, 241, 238, 236, 234, 231, 228, 225, 222, 219, 216, 212, 209, 205, 201, 197, 193, 189, 185, 181, 176, 171, 167, 162, 157, 152, 147, 142, 136, 131, 126, 120, 115, 109, 103, 97, 92, 86, 80, 74, 68, 62, 56, 49, 43, 37, 31, 25, 18, 12, 6, 0, -6, -12, -18, -25, -31, -37, -43, -49, -56, -62, -68, -74, -80, -86, -92, -97, -103, -109, -115, -120, -126, -131, -136, -142, -147, -152, -157, -162, -167, -171, -176, -181, -185, -189, -193, -197, -201, -205, -209, -212, -216, -219, -222, -225, -228, -231, -234, -236, -238, -241, -243, -244, -246, -248, -249, -251, -252, -253, -254, -254, -255, -255, -255, -256, -255, -255, -255, -254, -254, -253, -252, -251, -249, -248, -246, -244, -243, -241, -238, -236, -234, -231, -228, -225, -222, -219, -216, -212, -209, -205, -201, -197, -193, -189, -185, -181, -176, -171, -167, -162, -157, -152, -147, -142, -136, -131, -126, -120, -115, -109, -103, -97, -92, -86, -80, -74, -68, -62, -56, -49, -43, -37, -31, -25, -18, -12, -6, 0, 6, 12, 18, 25, 31, 37, 43, 49, 56, 62, 68, 74, 80, 86, 92, 97, 103, 109, 115, 120, 126, 131, 136, 142, 147, 152, 157, 162, 167, 171, 176, 181, 185, 189, 193, 197, 201, 205, 209, 212, 216, 219, 222, 225, 228, 231, 234, 236, 238, 241, 243, 244, 246, 248, 249, 251, 252, 253, 254, 254, 255, 255, 255 };
   return cosLUT[angle & 0xff];
}

void rotate(int x, int y, Fixed ca, Fixed sa, SDL_Rect *out)
{
   out->x = fixtoi(fixmul(itofix(x), ca) + fixmul(itofix(y), sa));
   out->y = fixtoi(fixmul(itofix(x), -sa) + fixmul(itofix(y), ca));
}

void custom_rotosprite(SDL_Surface *source, SDL_Rect sr, Fixed angle, SDL_Surface *screen)
{
   SDL_LockSurface(source);
   SDL_LockSurface(screen);
   
   // Rotated points
   SDL_Rect upleft, upright, downleft, downright;
   // Final rectangle, the rectangle containing all of the four rotated points
   // x,y = top-left corner
   // w,h = bottom-right corner
   SDL_Rect fr;
   
   Fixed dX = fixcos(angle), dY = fixsin(angle);
   
   rotate(-source->w / 2, -source->h / 2, dX, dY, &upleft);
   rotate(source->w / 2, -source->h / 2, dX, dY, &upright);
   rotate(-source->w / 2, source->h / 2, dX, dY, &downleft);
   rotate(source->w / 2, source->h / 2, dX, dY, &downright);
   
   fr.x = min(min(min(upleft.x, upright.x), downleft.x), downright.x) + sr.x;
   fr.y = min(min(min(upleft.y, upright.y), downleft.y), downright.y) + sr.y;
   fr.w = max(max(max(upleft.x, upright.x), downleft.x), downright.x) + sr.x;
   fr.h = max(max(max(upleft.y, upright.y), downleft.y), downright.y) + sr.y;
   // Current pixel
   SDL_Rect cp;
   
   // De-rotated pixel starting the line
   SDL_Rect lsp;
   // Current de-rotated pixel
   SDL_Rect cdrp;
   
   // De-rotates the pixel
   // Basically the same as rotate() with cos(-angle) and sin(-angle), but without the fixtoi()
   // Also, remember cos(-x) = cos(x) and sin(-x) = -sin(x)
   lsp.x = fixmul(itofix(fr.x - sr.x), dX) + fixmul(itofix(fr.y - sr.y), -dY);
   lsp.y = fixmul(itofix(fr.x - sr.x), dY) + fixmul(itofix(fr.y - sr.y), dX);
   
   for(cp.y = fr.y; cp.y < fr.h; cp.y++)
   {
      cdrp.x = lsp.x;
      cdrp.y = lsp.y;
      for(cp.x = fr.x; cp.x < fr.w; cp.x++)
      {
         if(cp.x >= 0 && cp.x < 320 && cp.y >= 0 && cp.y < 240)
         {
            if(abs(fixtoi(cdrp.x)) < source->w / 2 && abs(fixtoi(cdrp.y)) < source->h / 2)
            {
               Uint32 currentPixel = nSDL_GetPixel(source, fixtoi(cdrp.x) + source->w / 2, fixtoi(cdrp.y) + source->h / 2);
               if(currentPixel != source->format->colorkey)
                  nSDL_SetPixel(screen, cp.x, cp.y, currentPixel);
            }
         }
         cdrp.x += dX;
         cdrp.y += dY;
      }
      lsp.x -= dY;
      lsp.y += dX;
   }
   SDL_UnlockSurface(screen);
   SDL_UnlockSurface(source);
}

Je crois que j'ai rien oublié niveau include etoo.
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

PreviousNext

Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: ClaudeBot [spider] and 2 guests

-
Search
-
Social TI-Planet
-
Featured topics
Grand Concours 2024-2025 - Programmation Python
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
663 utilisateurs:
>638 invités
>19 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)