ImageVerifierCode 换一换
格式:DOCX , 页数:56 ,大小:165.75KB ,
资源ID:12148041      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12148041.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言编写俄罗斯方块实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言编写俄罗斯方块实验报告.docx

1、C语言编写俄罗斯方块实验报告贵州师范大学 学 院: 数计学院 班 级: 13级数媒班 学 号: 姓 名: 摘 要.关键字: 第一部分 设计总概 摘要一、设计目的 二、设计要求 三、设计内容 四、系统分析与设计 第二部分 数据结构设计 第三部分 功能实现与程序调试.第四部分 完成设计 一、实习日记 二、实习总结 三、教师评语 四、程序使用说明书.第一部分 设计总概一、设计目的二、设计要求三、设计内容四、系统分析与设计 第二部分 数据结构设计 第三部分 功能实现与程序调试第四部分 完成设计一、实习日记:二、实习总结:三、教师评语:设计成绩:指导老师签名: 摘 要使用C语言编写一个俄罗斯方块游戏系统

2、,要求程序运行后有一个图形用户界面,实现各种方块的生产,包括形状和颜色等信息,完成左右下旋转的功能,在消行的同时分数加10,在点击暂停或者按下空格的时候暂停或开始游戏,最后结束游戏.关键字:音乐、背景、按键控制、暂停、继续、停止,难度级别第一部分 设计总概一、设计目的:本课程设计是一个综合性的实践教学环节,目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学知识进行开发。希望通过本课程设计中简单系统的开发,使学生掌握软件设计的基本方法和基本流程,提高自己的综合应用能力。二、设计要求利用C+编写俄罗斯方块游戏,使俄罗斯游戏能够在Micros

3、oft Visual C+6.0上运行该游戏。二、设计内容:俄罗斯方块(1)游戏等级:游戏分为难中易三个等级,等级越高,方块下落速度越快;(2)由方向键控制游戏:上键控制方块变形、下键控制方块下移并判断是否有消行、左键控制方块左移、右键控制方块右移;(3)游戏积分:一次性消的行数越多加的分数越多,当达到一定分数自动提高一个游戏等级。三、系统分析与设计1.程序功能模块:2.程序流程图: 第二部分 数据结构设计1.游戏需求随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,每关方块下落的速度不同,若在游戏

4、中各形状填满了给定区域,为输者。2.游戏界面需求:良好的用户界面,以键盘操作,有关数显示和分数显示。让方块在一定的区域内运动和变形,并且显示下一个即将出现的方块。3.游戏形状(方块)需求:良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。第三部分 功能实现与程序调试程序:/ testBlock.cpp : Defines the entry point for the application./#define CreateWindow CreateWindowA#include

5、 stdafx.h#include resource.h#include/PlaySound函数的头文件 #pragma comment(lib, WINMM.LIB)#include commctrl.h #pragma comment(lib, comctl32.lib)#include #include HMENU hMenu; /菜单句柄#define IDM_NEW 40001#define IDM_PAUSE 40002/#define IDM_STOP 40003#define IDM_HELP 40008#define IDM_MUSIC 40010#define IDM_LE

6、FT 1001#define IDM_RIGHT 1002#define IDM_UP 1003#define IDM_DOWN 1004#define IDC_RADIO1 1005#define IDC_RADIO2 1006#define COLOR_BTNFACE 15#define MAX_LOADSTRING 100#define TIMER_DROP_ID 1int c = 0,contin=1;int cnext=0;int ch1=0;int ch2=0;int ch3=1;int music=0;BOOL bMusicOn; /音乐开关int iMusicBG; /背景音乐

7、canRotate( int rank);BOOL CALLBACK MusicDlgProc(HWND,UINT,WPARAM,LPARAM);void TetrisMusic(BOOL);void MusicItem(int);static TBBUTTON tbButtons = 0,IDC_JIXU,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,-1, 1,IDC_PAUSE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,-1, 2,IDM_STOP,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,-1, 0,0,T

8、BSTATE_ENABLED,TBSTYLE_SEP,0,0,-1, 3,IDM_MUSIC,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,-1, 4,IDM_HELP1,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,-1, 0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0,-1, 5,IDM_ABOUT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,-1,; /工具栏数据结构struct Block POINT a; POINT b; POINT c; POINT d; ; /方块模型数据结构sta

9、tic Block Tetris74 = / /(1) 0,0,0,1,1,0,1,1, 0,0,0,1,1,0,1,1, 0,0,0,1,1,0,1,1, 0,0,0,1,1,0,1,1 , / / (2) 0,0,1,0,1,1,2,1, 1,0,1,1,0,1,0,2, 0,0,1,0,1,1,2,1, 1,0,1,1,0,1,0,2 , / / (2) 1,0,2,0,0,1,1,1, 0,0,0,1,1,1,1,2, 1,0,2,0,0,1,1,1, 0,0,0,1,1,1,1,2 , /(2) 0,0,1,0,2,0,3,0, 1,0,1,1,1,2,1,3, 0,0,1,0,2,

10、0,3,0, 1,0,1,1,1,2,1,3 , / /(4) 1,0,0,1,1,1,2,1, 0,0,0,1,1,1,0,2, 0,0,1,0,2,0,1,1, 1,0,0,1,1,1,1,2 , / /(4) 0,0,0,1,1,1,2,1, 0,0,1,0,0,1,0,2, 0,0,1,0,2,0,2,1, 1,0,1,1,0,2,1,2 , / /(4) 2,0,0,1,1,1,2,1, 0,0,0,1,0,2,1,2, 0,0,1,0,2,0,0,1, 0,0,1,0,1,1,1,2 ; /七种方块全部变形数据结构int x = 4 ;/以方块为单位int y = -1;int n

11、BlockAreaX=10;/背景窗口int nBlockAreaY=30;int BlockMatrix1910;int nBlockKind = 0;int nBlockColor = 0;int nBlockState = 0;int nBlockAreaXnext=220;/显示窗口int nBlockAreaYnext=37;int BlockMatrixnext86;int nBlockKindnext = 0;int nBlockColornext = 0;int nBlockStatenext = 0;int gamescore=0;BOOL BGame=FALSE;BOOL

12、bGOver=FALSE;HWND hWnd;HDC hdc;HDC hMemDC = NULL;HDC hWndDC = NULL;/ Global Variables:HINSTANCE hInst; / current instanceTCHAR szTitleMAX_LOADSTRING; / The title bar textTCHAR szWindowClassMAX_LOADSTRING; / The title bar textHBITMAP bmp999 = 0;/ Foward declarations of functions included in this code

13、 module:ATOM MyRegisterClass(HINSTANCE hInstance);BOOL InitInstance(HINSTANCE, int);LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);void DrawTetris( HDC hdc, int offsetX/*0*/, int offsetY/*0*/, int rank/*no use*/ );void Tools(HWND hWnd);LoadIma

14、ge();void GameStart();void DrawNext(HDC hdc);void GameOver();void DrawButton(LPARAM lParam);LPARAM lParam; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) / TODO: Place code here. MSG msg; HACCEL hAccelTable; / Initialize global strings LoadString(hI

15、nstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_TESTBLOCK, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance);FILE *fp=NULL;/ char ch50; fp=fopen(test.txt,r); fgets(ch,523,fp); ch1=atoi(ch); fclose(fp);/ / Perform application initialization: if (!InitInstance (hIn

16、stance, nCmdShow) return FALSE; hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_TESTBLOCK); char fileName100 = 0; /res1.bmp for (int i = 0; i 9; i+ ) sprintf(fileName, res%d.bmp, i+1); bmpi = (HBITMAP)LoadImage(NULL, fileName,0,0,0,LR_LOADFROMFILE); /LOADIMAGEFROMFILE for( i=0;i=18;i+) for(in

17、t j=0;j=9;j+) BlockMatrixij=-1; for(int m=0;m=5;m+) for(int n=0;n=5;n+) BlockMatrixnextmn=-1; /beijing int a=1000; SetTimer(hWnd,TIMER_DROP_ID,a,NULL); hWndDC = GetDC(hWnd); hMemDC = CreateCompatibleDC(NULL); / Main message loop: Tools(hWnd); while (GetMessage(&msg, NULL, 0, 0) if (!TranslateAcceler

18、ator(msg.hwnd, hAccelTable, &msg) TranslateMessage(&msg); DispatchMessage(&msg); return msg.wParam;ATOM MyRegisterClass(HINSTANCE hInstance) WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndEx

19、tra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_ICON1); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+2); wcex.lpszMenuName = MAKEINTRESOURCE(IDC_TESTBLOCK); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.h

20、Instance, MAKEINTRESOURCE(IDI_ICON1); return RegisterClassEx(&wcex);BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) hInst = hInstance; / Store instance handle in our global variable hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 200, 350, 485, NULL, NULL, hInsta

21、nce, NULL);/窗口大小设置 if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE;LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; TCHAR szHelloMAX_LOADSTRING; LoadString(hInst, IDS_HELLO, szHello, MAX_L

22、OADSTRING); switch (message) case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); / Parse the menu selections: switch (wmId) case IDM_UP: SendMessage(hWnd,WM_KEYDOWN,VK_UP,0); SetFocus(hWnd); break; case IDM_DOWN: SendMessage(hWnd,WM_KEYDOWN,VK_DOWN,0); SetFocus(hWnd); break; case IDM_R

23、IGHT: SendMessage(hWnd,WM_KEYDOWN,VK_RIGHT,0); SetFocus(hWnd); break; case IDM_LEFT: SendMessage(hWnd,WM_KEYDOWN,VK_LEFT,0); SetFocus(hWnd); break; case IDM_START: InvalidateRect(hWnd,0,1); GameStart(); break; break;/开始按键 case IDC_PAUSE:/暂停 BGame=FALSE; MessageBox(NULL, 你好,游戏暂停, 暂停, MB_OK); break; c

24、ase IDC_JIXU:/继续 if(contin!=0) BGame=TRUE; break; case IDM_STOP:/停止 BGame=FALSE; GameOver(); break; case IDC_easy: InvalidateRect(hWnd,0,0); ch3=1; MessageBox(NULL, 你好,你选择的难易程度为简单, 简单, MB_OK); SetTimer(hWnd,TIMER_DROP_ID,1000,NULL); break; case IDC_normal: InvalidateRect(hWnd,0,0); ch3=2; MessageBox

25、(NULL, 你好,你选择的难易程度为一般, 一般, MB_OK); SetTimer(hWnd,TIMER_DROP_ID,500,NULL); break; case IDC_difficult: MessageBox(NULL, 你好,你选择的难易程度为困难, 困难, MB_OK); ch3=3; InvalidateRect(hWnd,0,0); SetTimer(hWnd,TIMER_DROP_ID,100,NULL); break; case IDM_beijing: SelectObject(hMemDC,bmp8); BitBlt(hWndDC,0,20,2000,2000,h

26、MemDC,0,0,SRCCOPY); InvalidateRect(hWnd,0,0);/重绘 /InvalidateRect(hwnd, NULL, false);重画时不擦除背景 break; case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_HELP1), hWnd, (DLGPROC)About); break; case IDM_HELP1: DialogBox(hInst, MAKEINTRESOURCE(IDD_help2), hWnd, (DLGPROC)About); break; case IDM_MUSIC: DialogBox(hInst,MAKEINTRESOURCE(IDD_MUSIC),hWnd,MusicDlgProc); break; case IDM_music1: MusicItem(IDM_music1); break; case

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1