Aide en mode graphique en C
Fermé
xdev10
Messages postés
8
Date d'inscription
vendredi 27 mars 2015
Statut
Membre
Dernière intervention
23 décembre 2015
-
31 mars 2015 à 02:32
Utilisateur anonyme - 2 avril 2015 à 17:50
Utilisateur anonyme - 2 avril 2015 à 17:50
A voir également:
- Aide en mode graphique en C
- Mode sécurisé samsung - Guide
- Démarrer en mode sans echec - Guide
- Mode d'emploi - Guide
- God mode - Guide
- Changer carte graphique - Guide
1 réponse
Utilisateur anonyme
Modifié par shaynox le 2/04/2015 à 15:51
Modifié par shaynox le 2/04/2015 à 15:51
Salut, et bien logiquement tu ne touche que la partie affichage (printf) et pas la partie méchanique de ton jeux.
Après pour la partie graphique, tu peut adopter ma propre méthode que je trouve est beaucoup plus simple que les algo généraux pour faire du graphique avec la WinAPI.
Alors en premier tu link les lib obligatoire: kernel32.lib;user32.lib;gdi32.lib, puis tu suit cette algo:
PS: utilise les balises
(\___/)
(='.'=)
(")_(")
This is Bunny. Copy and paste bunny into...
...your signature to help him gain world domination
Après pour la partie graphique, tu peut adopter ma propre méthode que je trouve est beaucoup plus simple que les algo généraux pour faire du graphique avec la WinAPI.
Alors en premier tu link les lib obligatoire: kernel32.lib;user32.lib;gdi32.lib, puis tu suit cette algo:
#include <windows.h>
#include <stdio.h>
#define BPP 4
#define LENGTH 1920 // x
#define WIDTH 1080 // y
#define WHITE 0x00FFFFFF
#define BLACK 0x00000000
#define RED 0x00FF0000
#define GREEN 0x0000FF00
#define BLUE 0x000000FF
// Indice for array
#define _x 0
#define _y 1
int screen[LENGTH*WIDTH] = { 0 };
int screen_info[2];
HINSTANCE instance;
HBITMAP texture;
PAINTSTRUCT paint_struct;
HDC device_context_screen;
HDC device_context_texture;
WNDCLASS windows_class;
HWND windows_handle;
MSG event;
LRESULT anwser;
HICON icon_program;
void clear_screen(void)
{
int loop = 0;
while (loop < screen_info[_x] * screen_info[_y])
screen[loop++] = BLACK;
}
LRESULT windows_procedure(HWND windows_handle, UINT message, WPARAM w_param_msg, LPARAM l_param_msg)
{
switch (message)
{
case WM_SIZE:
screen_info[_x] = LOWORD(l_param_msg);
screen_info[_y] = HIWORD(l_param_msg);
texture = CreateCompatibleBitmap(device_context_screen, screen_info[_x], screen_info[_y]);
device_context_texture = CreateCompatibleDC(device_context_screen);
SelectObject(device_context_texture, texture);
break;
}
// Switch first or 2nd instruction for get windowed or full screen
return DefWindowProc(windows_handle, message, w_param_msg, l_param_msg);;
//return 1;
}
void upload_screen()
{
SetBitmapBits(texture, screen_info[_x] * screen_info[_y] * BPP, screen);
BitBlt(device_context_screen, 0, 0, screen_info[_x], screen_info[_y], device_context_texture, 0, 0, SRCCOPY);
}
void init_video(void)
{
windows_class.cbClsExtra = 0;
windows_class.cbWndExtra = 0;
windows_class.hbrBackground = 0;
windows_class.hCursor = 0;
windows_class.hIcon = 0;
windows_class.hInstance = instance;
windows_class.lpfnWndProc = windows_procedure;
windows_class.lpszClassName = "Classe 1";
windows_class.lpszMenuName = NULL;
windows_class.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&windows_class);
windows_handle = CreateWindow("Classe 1",
"Window",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, screen_info[_x], screen_info[_y],
NULL,
NULL,
instance,
NULL
);
device_context_screen = GetDC(windows_handle);
texture = CreateCompatibleBitmap(device_context_screen, screen_info[_x], screen_info[_y]);
device_context_texture = CreateCompatibleDC(device_context_screen);
SelectObject(device_context_texture, texture);
}
int main(HINSTANCE _instance, HINSTANCE _previous_instance, LPSTR cmd_line, int cmd_show)
{
int a;
instance = _instance;
screen_info[_x] = LENGTH;
screen_info[_y] = WIDTH;
init_video();
while (1)
{
PeekMessage(&event, windows_handle, 0, 0, PM_REMOVE);
windows_procedure(windows_handle, event.message, event.wParam, event.lParam);
// Modify the screen
a = 250000;
while (a--)
screen[a] = BLUE;
upload_screen();
clear_screen();
}
}
PS: utilise les balises
etstp
(\___/)
(='.'=)
(")_(")
This is Bunny. Copy and paste bunny into...
...your signature to help him gain world domination
2 avril 2015 à 17:50