Tirage du loto (win32 vc++ asm)

Description

Du pseudo aleatoire et tri a bulles.
Commentaires dans source.
Tout dans zip pour recompiler.

Source / Exemple :


#include <windows.h>
#include "resource.h"
#include "FncAsm.h"

HINSTANCE hinst;
HWND hcmb, hres;
DWORD nbrs[10];
char szbuff[52];

void Tirage()
{
  long count, i, pos = 0;
  DWORD num;
  char *c;
  srand(GetTickCount());
  count = SendMessage(hcmb, CB_GETCURSEL, 0, 0)  + 6;
  // REMPLISSAGE TABLEAU
  while(pos < count) {
    num = ((DWORD)rand() % 49) + 1;
    i = pos; // TEST D'UNICITE
    while(--i >= 0) if(nbrs[i] == num) break;
    if(i < 0) nbrs[pos++] = num; // SI ABSENT, ON INSERE
  }
  // TRI ORDRE CROISSANT
  i = count - 1;
  while(i--) {
    pos = -1;
    while(pos++ < i) {
      if(nbrs[pos] < nbrs[pos+1]) {
        num = nbrs[pos]; nbrs[pos] = nbrs[pos+1]; nbrs[pos+1] = num;
      }
    }
  }
  // RESULTATS DANS szbuff
  i = count; c = szbuff-3;
  while(--i >= 0) {
    num = nbrs[i];
    __asm mov ecx, c
    __asm mov eax, num
    __asm add ecx, 3
    c = bnultoa();

  • c = 32; *(c+1) = '-'; *(c+2) = 32;
}
  • c = 0; SetWindowText(hres, szbuff); // AFFICHAGE
} void InitCmb() { DWORD i = 6; while(i < 11) { __asm mov ecx, offset szbuff __asm mov eax, i bnultoa(); i++; SendMessage(hcmb, CB_ADDSTRING, 0, (long) szbuff); } SendMessage(hcmb, CB_SETCURSEL, 0, 0); } BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case WM_INITDIALOG: SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(hinst, MAKEINTRESOURCE(IDI_APP))); hcmb = GetDlgItem(hdlg, IDCMB_NBR); hres = GetDlgItem(hdlg, IDST_RES); InitCmb(); return 1; case WM_COMMAND: switch(wParam) { case IDBT_TIR: Tirage(); return 0; case IDCANCEL: EndDialog(hdlg, 0); } } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int) { hinst = hInstance; DialogBox(hInstance, MAKEINTRESOURCE(IDD_APP), NULL, AppDlgProc); return 0; }

Conclusion :


bnultoa() est dans FncAsm.cpp
Ne pas regarder si ASM herisse les poils.
ciao...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.