winner-mode

模式介绍:

 winner-mode 是用于emacs窗口管理的命令,官方对它的描述是“Switch back to an earlier window configuration saved by Winner mode.In other words, "undo" changes in window configuration.Restore a more recent window configuration saved by Winner mode.”我的理解是“撤销对窗口的配置” 或者 “恢复该模式最新的配置”

使用方式:

在*.el文件中开启winner-mode,关闭重启emacs即可生效:

(winner-mode 1)

快捷键

C + c left //撤销窗口配置
C + c right//恢复窗口最新配置

 总结:

 该模式用于快速切换emacs窗口,从而提升效率与emacs体验感。而且使用简单,简单配置即可使用。

 

Before Playstation, there was Pong, at one time the ultimate in video game entertainment. For those of you not familiar with this game please refer to the Wikipedia entry (http://en.wikipedia.org/wiki/Pong) and the many fine websites extolling the game and its virtues. Pong is not so very different in structure from the Billiard ball simulation that you developed earlier in the course. They both involve a ball moving and colliding with obstacles. The difference in this case is that two of the obstacles are under user control. The goal of this project is to develop your own version of Pong in MATLAB using the keyboard as input, for example, one player could move the left paddle up and down using the q and a keys while the right paddle is controlled with the p and l keys. You may check the code for the Lunarlander game which demonstrates some of the techniques you can use to capture user input. You will also probably find the plot, set, line and text commands useful in your program. You have used most of these before in the billiard simulation and you can use Matlabs online help to get more details on the many options these functions offer. Your program should allow you to play a game to 11 keeping track of score appropriately. The general structure of the code is outlined below in pseudo code While not done Update Ball State (position and velocity) taking into account collisions with walls and paddles Check for scoring and handle appropriately Update Display Note that in this case it is implicitly assumed that capturing the user input and moving the paddles is being handled with callback functions which removes that functionality from the main loop. For extra credit you could consider adding extra features like spin or gravity to the ball flight or providing a single player mode where the computer controls one of the paddles.
05-30
好的,您的问题是如何使用MATLAB开发乒乓球游戏。 以下是一个简单的乒乓球游戏的MATLAB代码示例,其中包括两个玩家控制两个挡板并跟踪得分。在这个示例中,玩家1使用键盘上的Q和A键控制左侧的挡板,玩家2使用P和L键控制右侧的挡板。球的移动和碰撞计算使用简单的物理公式。您可以根据自己的需求进行修改和扩展,例如添加单人模式或其他功能。 ``` % 设置游戏参数 paddle_width = 0.1; % 挡板宽度 paddle_height = 0.4; % 挡板高度 paddle_speed = 0.1; % 挡板移动速度 ball_radius = 0.05; % 球半径 ball_speed = 0.1; % 球移动速度 score_limit = 11; % 得分上限 % 初始化游戏状态 paddle1_y = 0; % 玩家1挡板位置 paddle2_y = 0; % 玩家2挡板位置 ball_x = 0; % 球位置 ball_y = 0; % 球位置 ball_vx = ball_speed; % 球水平速度 ball_vy = 0; % 球垂直速度 score1 = 0; % 玩家1得分 score2 = 0; % 玩家2得分 % 创建游戏图形界面 figure(1); clf; hold on; axis([-1 1 -1 1]); set(gca, 'XTick', [], 'YTick', []); line([-1 1], [0 0], 'Color', 'w', 'LineWidth', 2); text(0, 0.5, 'MATLAB Pong', 'HorizontalAlignment', 'center', 'FontSize', 20); text(-0.5, -0.5, 'Player 1: Q/A', 'HorizontalAlignment', 'left', 'FontSize', 12); text(0.5, -0.5, 'Player 2: P/L', 'HorizontalAlignment', 'right', 'FontSize', 12); paddle1 = rectangle('Position', [-1+paddle_width/2 paddle1_y-paddle_height/2 paddle_width paddle_height], 'FaceColor', 'w'); paddle2 = rectangle('Position', [1-paddle_width/2 paddle2_y-paddle_height/2 paddle_width paddle_height], 'FaceColor', 'w'); ball = rectangle('Position', [ball_x-ball_radius ball_y-ball_radius 2*ball_radius 2*ball_radius], 'Curvature', [1 1], 'FaceColor', 'w'); % 处理键盘输入 set(gcf, 'KeyPressFcn', @keyPressed); function keyPressed(~, event) key = event.Key; switch key case 'q' paddle1_y = min(paddle1_y+paddle_speed, 1-paddle_height/2); case 'a' paddle1_y = max(paddle1_y-paddle_speed, -1+paddle_height/2); case 'p' paddle2_y = min(paddle2_y+paddle_speed, 1-paddle_height/2); case 'l' paddle2_y = max(paddle2_y-paddle_speed, -1+paddle_height/2); end end % 游戏主循环 while score1 < score_limit && score2 < score_limit % 更新球位置 ball_x = ball_x + ball_vx; ball_y = ball_y + ball_vy; ball_left = ball_x - ball_radius; ball_right = ball_x + ball_radius; ball_top = ball_y + ball_radius; ball_bottom = ball_y - ball_radius; % 处理球和挡板的碰撞 if ball_left < -1+paddle_width && ball_bottom < paddle1_y+paddle_height/2 && ball_top > paddle1_y-paddle_height/2 ball_vx = abs(ball_vx); ball_vy = (ball_y-paddle1_y) / (paddle_height/2) * ball_speed; elseif ball_right > 1-paddle_width && ball_bottom < paddle2_y+paddle_height/2 && ball_top > paddle2_y-paddle_height/2 ball_vx = -abs(ball_vx); ball_vy = (ball_y-paddle2_y) / (paddle_height/2) * ball_speed; end % 处理球和墙壁的碰撞 if ball_top > 1 || ball_bottom < -1 ball_vy = -ball_vy; end % 处理得分 if ball_left < -1 score2 = score2 + 1; ball_x = 0; ball_y = 0; ball_vx = ball_speed; ball_vy = 0; elseif ball_right > 1 score1 = score1 + 1; ball_x = 0; ball_y = 0; ball_vx = -ball_speed; ball_vy = 0; end % 更新图形界面 set(paddle1, 'Position', [-1+paddle_width/2 paddle1_y-paddle_height/2 paddle_width paddle_height]); set(paddle2, 'Position', [1-paddle_width/2 paddle2_y-paddle_height/2 paddle_width paddle_height]); set(ball, 'Position', [ball_x-ball_radius ball_y-ball_radius 2*ball_radius 2*ball_radius]); drawnow; end % 显示游戏结果 if score1 > score2 winner = 'Player 1'; else winner = 'Player 2'; end text(0, 0, [winner ' wins!'], 'HorizontalAlignment', 'center', 'FontSize', 20); ``` 希望这个示例代码可以帮助您开发自己的乒乓球游戏。如果您有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值