南昌航空大学历届c语言课设选题

上传人:第*** 文档编号:55656180 上传时间:2018-10-03 格式:PDF 页数:26 大小:271.96KB
返回 下载 相关 举报
南昌航空大学历届c语言课设选题_第1页
第1页 / 共26页
南昌航空大学历届c语言课设选题_第2页
第2页 / 共26页
南昌航空大学历届c语言课设选题_第3页
第3页 / 共26页
南昌航空大学历届c语言课设选题_第4页
第4页 / 共26页
南昌航空大学历届c语言课设选题_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《南昌航空大学历届c语言课设选题》由会员分享,可在线阅读,更多相关《南昌航空大学历届c语言课设选题(26页珍藏版)》请在金锄头文库上搜索。

1、C 语言课程设计选题 1. 俄罗斯方块游戏(难度系数:A) 实现传统的俄罗斯方块游戏基本功能:随机产生下一方块,方块移动、旋转、消行等操作(1)系统变量(基本) 屏幕宽度(横向最多方块数) int i_screen_width (暂定 10) 屏幕高度(纵向最多方块数)int i_screen_height(暂定 20) 屏幕上方块数组: int a_screeni_screen_width i_screen_height(a_screenij 等于 1 表示该位置有方块,如果没有,表示没有方块) 方块类型数:int i_number(暂定 7 种方块) 方块类型数组:int a_blocki

2、_number * 4 (每种方块最多 4 种位置) 方块类型对应屏幕位置数组: int a_block_posi_number * 42 (每种方块最多 4 种位置, 每个位置由 2 个坐标表示 X 与 Y, 0 =X i_screen_width, 0= X i_screen_height) 当前方块 ID:int i_cur_block( 0 = i_cur_block i_number * 4) 下一方块 ID:int i_next_block(0 = i_next_block i_number * 4) 当前得分:int l_score(2)待实现的函数(基本)方法名称方法声明方法作

3、用初始化void init()初始化屏幕数组、当前方块、下一方块等相关变 量随机产生下一方 块int get_next_block() 随机产生下一方块,并返回下一方块 ID判断当前屏幕是 否能消行int merge()判断当前屏幕有哪些能消的行,如果有则消除该 行,并将消行的上面所有行下移,并记录得分移动屏幕上多行 方块int move_lines ( int from_line)将屏幕上从 from_line 行开始(包括该行)以上 所有的行向下移一行,移动成功返回 1,移动不 成功返回 0移动屏幕上多行 方块 (可移多行)int move_lines ( int from_line, i

4、nt lines)将屏幕上从 from_line 行开始(包括该行) 以上所 有的行向下移 lines 行下移当前方块int block_down()当前方块下移一行,下移成功返回 1,下移不成 功返回 0左移当前方块int block_left()当前方块左移一行,左移成功返回 1,不成功返 回 0右移当前方块int block_right()当前广场右移一行,右移成功返回 1,不成功返 回 0变形方块inttransform ( int block_id)将 block_id 所代表的方块向右旋转一次,返回旋 转成功之后的方块 ID判断方块是否到 底intstop_drop ( int b

5、lock_id)判断 block_id 所代表的方块是否移动到底,如果 移动到底,则返回 1,否则返回 0存储当前得分intsave(char* filename)将当前得分存储到文件(filename)中,存储成功 返回 1,存储不成功返回 0屏幕显示主函数2. 五子棋游戏(难度系数:B) (1)系统变量(基本) 棋盘宽度:int i_width(暂定 20) 棋盘高度:int i_height(暂定 20) 棋盘数组:int a_boardi_widthi_height (aij等于 1 表示该位置是白棋,等于 2 表示 该位置是黑棋,等于 0 表示没有棋子) 当前下棋方:int i_cu

6、r_side (等于 1 表示等待白棋下子,等于 2 表示等待黑棋下子) 棋局记录数组:int a_board_record stepsi_widthi_height (aijk表示该棋局中第 i 步的棋盘位置是 a jk(2)待实现的函数(基本)方法名称方法声明方法作用初始化void init()初始化棋盘数组、当前下棋方等相关 变量下棋int place_chess (int x, int y, int size)在 x,y 坐标放置一颗 side 方的棋子, 能放则返回 1,否则返回 0判断横向连成五子int is_cross_x(int x, int y)判断在 x, y 位置的棋子是

7、否与左右的 棋子连成五子,能连则返回 1,否则 返回 0判断纵向连成五子int is_cross_y(int x, int y)判断在 x, y 位置的棋子是否与上下的 棋子连成五子,能连则返回 1,否则 返回 0判断左上到右下的斜线 是否连成五子int is_cross_lt(int x, int y)判断在 x, y 位置的棋子是否与左上右 下斜线位置上的棋子连成五子,能连 则返回 1,否则返回 0判断右上到左下的斜线 是否连成五子int is_cross_rd(int x, int y)判断在 x, y 位置的棋子是否与右上左 下斜线位置上的棋子连成五子,能连 则返回 1,否则返回 0记

8、录当前棋局int record()记录当前棋盘上的棋子位置信息到棋 局记录数组,记录成功返回 1,不成 功返回 0悔棋int rollback()悔一步棋,悔棋成功返回 1,悔棋不 成功返回 0悔多步棋int rollback(int steps)悔多步棋,悔棋成功返回 1,悔棋不 成功返回 0复盘void play(int step_id)显示第 step_id 步的棋盘所有棋子位 置存储棋局voidsave(char* filename)将当前棋局存储到文件 (filename) 中, 存储成功返回 1,存储不成功返回 0屏幕显示主函数321 点游戏(难度系数:A) (1)系统变量(基本)

9、 纸牌类型: int i_type (暂定 4 种,黑桃、红心、梅花、方块) 纸牌点数: int i_card (0= i_card 13) 当前局牌库:int cardsi_card * i_type (当前待发的牌) 当前纸牌:int i_cur_card(0 = i_cur_card i_card * i_type,35 代表梅花 10, 35 = 2*13 + 9) 当前比赛选手数: int i_player_number (0 = i_player_number 10,可在比赛开始时 动态指定) 当前选手手中牌: int a_playersi_player_number10 (每个选

10、手当前手中的牌, players110表示选手 2 手中的牌,最多 10 张) 当前选手得分:int a_scoresi_player_number (scores2 表示选手 3 当前的总得分 当前下注:int a_betsi_player_number (bets0 表示选手 0 当前局下注) 牌局记录:int a_record_setstepi_player_number10 (记录牌局)(2)待实现的函数(基本)方法名称方法声明方法作用初始化void init()初始化当前选手、得分等相关变量开局void begin()某一局的开始,初始化下注,牌库 等信息随机产生牌局void gen

11、erate_cards()随机产生当前牌库中的牌发牌void assign_card ( int i_player_number)给选手 i_player_number 发一张牌比较大小intcompare(int player1_number,int player2_number)比 较 选 手player1_number与 player2_number 手中牌的点数大小, 返回 1表示 player1_number 大; 0 表 示 一 样 大 ; -1 表 示 player2_number 大记录选手得分intwrite_score ( int player_number,int sco

12、re)为选手 player_number 的总得分加 上当前得分当前局评分void eval()当前局结束,为当前局的所有选手 比较大小,并计算出各自的得分记录当前牌局void record()记录当前牌局保存voidsave(char* filename)将当前牌局保存到文件 filename 中读取牌局voidread(char* filename)将文件 filename 中保存的牌局读取 到牌局记录 a_record_set 数组中屏幕显示主函数4. 中国象棋游戏 (难度系数:A) (1)系统变量(基本) 棋盘宽度:int i_board_width (固定的象棋棋盘宽度) 棋盘高度:

13、int i_board_height(固定的象棋棋盘高度) 棋盘上棋子位置:int a_boardsi_board_widthi_board_height 当前下棋方:int i_cur_side (1红方2 黑方) 上次移动棋子:int i_chess (0 6 分别代表红方的帅仕相车马炮兵,7-13 分别代表黑 方的将士象车马炮卒) 棋局记录: int stepi_board_widthi_board_height 记录棋局 胜方:int i_success_side (1红方2 黑方 0 表示当前未结束棋局)(2)待实现的函数(基本)方法名称方法声明方法作用初始化void init()初

14、始化棋盘数组、当前下棋方等相关 变量下棋intmove_chess ( int chess, int x, int y, int x2, int y2)将棋子从 x, y 位置移动到 x2, y2,移 动吃子则返回被吃掉子的 id,没吃子 则返回-1判断移动规则int can_move(int chess, int x, int y, int x2, int y2)判断棋子能否从 x, y 移动 x2, y2,如 果规则允许则返回 1,否则返回 0判断胜负int set_success (int side) 设置为 side 方胜利记录当前棋局int record()记录当前棋盘上的棋子位置信

15、息到棋 局记录数组,记录成功返回 1,不成 功返回 0悔棋int rollback()悔一步棋,悔棋成功返回 1,悔棋不 成功返回 0悔多步棋int rollback(int steps)悔多步棋,悔棋成功返回 1,悔棋不 成功返回 0复盘void play(int step_id)显示第 step_id 步的棋盘所有棋子位 置存储棋局voidsave(char* filename)将当前棋局存储到文件 (filename) 中, 存储成功返回 1,存储不成功返回 0屏幕显示主函数5. 贪吃蛇游戏(难度系数:B) (1)系统变量(基本) 屏幕宽度(横向最多方块数) int i_screen_w

16、idth (暂定 20) 屏幕高度(纵向最多方块数)int i_screen_height(暂定 20) 当前蛇的方向:int i_direction 当前蛇的长度:int i_length 最大蛇身长度:int MAX_LENGTH = 30 当前蛇的位置:int a_snakesMAX_LENGTH 当前产生的食物位置: int a_posi_screen_widthi_screen_height 当前速度:float f_speed 当前得分:int l_score(2)待实现的函数(基本)方法名称方法声明方法作用初始化void init()初始化屏幕数组、当前蛇的位置等相关变量随机产生食物int place_food()在屏幕上空白区域随机产生一个食物判断是否出边界int out_of_bound()判断蛇头是否出边界上移int move_up(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号