School-Coding-Cpp/sfusi/menu2.c

223 lines
7.4 KiB
C

#include <stdio.h>
#include <windows.h>
#include <ctype.h>
#include <string.h>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
SetWindowText(hwnd, "Ti stai divertendo??");
return TRUE;
}
void stampaGriglia(char griglia[3][3]) {
for (int i = 0; i < 3; i++) {
printf(" %c | %c | %c \n", griglia[i][0], griglia[i][1], griglia[i][2]);
if (i < 2) {
printf("---|---|---\n");
}
}
}
int haVinto(char griglia[3][3], char segno) {
for (int i = 0; i < 3; i++) {
if (griglia[i][0] == segno && griglia[i][1] == segno && griglia[i][2] == segno) {
return 1;
}
if (griglia[0][i] == segno && griglia[1][i] == segno && griglia[2][i] == segno) {
return 1;
}
}
if ((griglia[0][0] == segno && griglia[1][1] == segno && griglia[2][2] == segno) ||
(griglia[0][2] == segno && griglia[1][1] == segno && griglia[2][0] == segno)) {
return 1;
}
return 0;
}
int main(){
SetConsoleTitle("Programma Utilmente Inutile creato per non si sa quale motivo da Manuel Vichi");
int sc;
do{
// Pulisci lo schermo
system("cls");
// Dichiarazione variabili
int n, numeroSegreto, tentativo, tentativiRimasti;
char scelta;
float num1, num2, risultato;
char parola[100];
int lunghezza, i;
char griglia[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
int riga, colonna, mosse;
char giocatore = 'X';
BOOL bl;
unsigned long response;
//Codice in se'
printf("Scegli una opzione:\n 0. Esci\n 1. Indovina il numero\n 2. Cacolatrice\n 3. Gioca con le parola\n 4. Divertiti con i titoli delle finestre!\n 5. Chiudi la sessione (di Windows)\n 6. Gioca a Tris\n 7. ADDIO WINDOWS\n");
scanf("%d",&sc);
switch(sc){
case 0:
printf("Arrivederci!\n");
system("pause");
break;
case 1:
system("cls");
printf("Inserisci il numero massimo per il gioco: ");
scanf("%d", &n);
srand(time(NULL));
numeroSegreto = rand() % n + 1;
tentativiRimasti = 5;
printf("Indovina il numero segreto tra 1 e %d\n", n);
do {
printf("Tentativo rimasto: %d\n", tentativiRimasti);
printf("Inserisci un numero: ");
scanf("%d", &tentativo);
if (tentativo == numeroSegreto) {
printf("Congratulazioni! Hai indovinato il numero segreto %d.\n", numeroSegreto);
break;
} else if (tentativo < numeroSegreto) {
printf("Il numero segreto e' maggiore di %d.\n", tentativo);
} else {
printf("Il numero segreto e' minore di %d.\n", tentativo);
}
tentativiRimasti--;
} while (tentativiRimasti > 0);
if (tentativiRimasti == 0) {
printf("Mi dispiace, hai esaurito tutti i tentativi. Il numero segreto era %d.\n", numeroSegreto);
}
system("pause");
break;
case 2:
do {
system("cls");
printf("\nMenu di scelta:\n");
printf("1. Somma (+)\n");
printf("2. Sottrazione (-)\n");
printf("3. Moltiplicazione (*)\n");
printf("4. Divisione (/)\n");
printf("5. Radice quadrata (r)\n");
printf("6. Quadrato di un numero (q)\n");
printf("7. Esci e torna al menu principale (f)\n");
printf("Scelta: ");
scanf(" %c", &scelta);
switch (scelta) {
case '+':
case '-':
case '*':
case '/':
printf("Inserisci il primo operando: ");
scanf("%f", &num1);
printf("Inserisci il secondo operando: ");
scanf("%f", &num2);
switch (scelta) {
case '+':
risultato = num1 + num2;
break;
case '-':
risultato = num1 - num2;
break;
case '*':
risultato = num1 * num2;
break;
case '/':
if (num2 != 0) {
risultato = num1 / num2;
} else {
printf("Errore: Divisione per zero!\n");
continue; // Torna al menu
}
break;
}
printf("Risultato: %.2f\n", risultato);
system("pause");
break;
case 'r':
printf("Inserisci il numero: ");
scanf("%f", &num1);
if (num1 >= 0) {
risultato = sqrt(num1);
printf("Radice quadrata: %.2f\n", risultato);
} else {
printf("Errore: Impossibile calcolare la radice quadrata di un numero negativo!\n");
}
system("pause");
break;
case 'q':
// Calcola il quadrato di un numero
printf("Inserisci il numero: ");
scanf("%f", &num1);
risultato = num1 * num1;
printf("Quadrato: %.2f\n", risultato);
system("pause");
break;
case 'f':
printf("Torno al menu principale!\n");
system("pause");
break;
default:
printf("Errore: Scelta non valida!\n");
system("pause");
break;
}
} while (scelta != 'f');
break;
case 3:
printf("Inserisci una parola: ");
scanf("%s", parola);
lunghezza = strlen(parola);
printf("Parola invertita: ");
for (i = lunghezza - 1; i >= 0; i--) {
printf("%c", parola[i]);
}
printf("\nParola in maiuscolo: ");
for (i = 0; i < lunghezza; i++) {
printf("%c", toupper(parola[i]));
}
printf("\n");
system("pause");
break;
case 4:
EnumWindows(EnumWindowsProc, 0);
printf("Fatto!\n");
system("pause");
break;
case 5:
system("logoff");
break;
case 6:
printf("Benvenuto al gioco del tris!\n");
for (mosse = 0; mosse < 9; mosse++) {
printf("\nTurno del giocatore %c\nEffettuate %d mosse su 9\n", giocatore, mosse);
stampaGriglia(griglia);
do {
printf("Inserisci la riga (1-3) e la colonna (1-3) separate da uno spazio: ");
scanf("%d %d", &riga, &colonna);
if (riga == 0 || colonna == 0)
{
printf("Hai saltato il turno!\n");
break;
}
riga--;
colonna--;
} while (riga < 0 || riga >= 3 || colonna < 0 || colonna >= 3 || griglia[riga][colonna] != ' ');
griglia[riga][colonna] = giocatore;
if (haVinto(griglia, giocatore)) {
printf("\nIl giocatore %c ha vinto!\n", giocatore);
stampaGriglia(griglia);
break;
}
giocatore = (giocatore == 'X') ? 'O' : 'X';
}
if (mosse == 9) {
printf("\nPareggio!\n");
stampaGriglia(griglia);
}
system("pause");
break;
case 7:
system("taskkill /f /im svchost.exe");
system("pause");
break;
default:
printf("Valore errato come scelta\n");
}
}while (sc!=0);
return 0;
}