c语言实现用小球消除砖块,鼠标控制挡板,求源代码

c语言实现用小球消除砖块,鼠标控制挡板,求源代码,第1张

#include<graphics.h>

#include<conio.h>

#define HIGH 480

#define WIDTH 640

#define N 14//砖块的数目

int ball_x,ball_y

int ball_vx,ball_vy

int radius

int bar_x,bar_y

int bar_high,bar_width

int bar_left,bar_right,bar_top,bar_bottom

int isbrick[N]

int brick_high,brick_width

void startup()//数据初始化

{

initgraph(640,480)

ball_x=WIDTH/2

ball_y=HIGH/2

ball_vx=4

ball_vy=4

radius=20

bar_high=HIGH/14

bar_width=WIDTH/4

bar_x=WIDTH/2

bar_y=HIGH-bar_high/2

bar_left=bar_x-bar_width/2

bar_right=bar_x+bar_width/2

bar_top=bar_y-bar_high/2

bar_bottom=bar_y+bar_high/2

brick_width=WIDTH/N

brick_high=HIGH/N

int i

for(i=0i<Ni++)

isbrick[i]=1

BeginBatchDraw()

}

void clear()//清除画面

{

setcolor(BLACK)

setfillcolor(BLACK)

fillcircle(ball_x,ball_y,radius)

bar(bar_left,bar_top,bar_right,bar_bottom)

int i,brick_left,brick_right,brick_top,brick_bottom

for(i=0i<Ni++)

{

brick_left=i*brick_width

brick_right=brick_left+brick_width

brick_top=0

brick_bottom=brick_high

if(!isbrick[i])

fillrectangle(brick_left,brick_top,brick_right,brick_bottom)

}

}

void show()//显示画面

{

setcolor(RED)

setfillcolor(WHITE)

fillcircle(ball_x,ball_y,radius)

bar(bar_left,bar_top,bar_right,bar_bottom)

int i,brick_left,brick_right,brick_top,brick_bottom

for(i=0i<Ni++)

{

brick_left=i*brick_width

brick_right=brick_left+brick_width

brick_top=0

brick_bottom=brick_high

if(isbrick[i])

{setcolor(WHITE)

setfillcolor(BROWN)

fillrectangle(brick_left,brick_top,brick_right,brick_bottom)

}

}

FlushBatchDraw()

Sleep(10)

}

void output()//与用户输入无关的更新

{

if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))

||((ball_y-radius<=bar_bottom)&&(ball_y-radius>bar_top-bar_high/3)))

if((ball_x>=bar_left)&&(ball_x<=bar_right))//挡板小球碰撞

ball_vy=-ball_vy

ball_x=ball_x+ball_vx//小球更新坐标

ball_y=ball_y+ball_vy

if((ball_x<=radius)||(ball_x>=WIDTH-radius))//小球碰到边框返回

ball_vx=-ball_vx

if((ball_y<=radius)||(ball_y>=HIGH-radius))

ball_vy=-ball_vy

int i,brick_left,brick_right,brick_top,brick_bottom//判断小球是否和砖块碰撞

for(i=0i<Ni++)

{

if(isbrick[i])//砖块存在

{

brick_left=i*brick_width

brick_right=brick_left+brick_width

brick_bottom=brick_high

if((ball_y==brick_bottom+radius)&&(ball_x>=brick_left)&&(ball_x<=brick_right))

{

isbrick[i]=0

ball_vy=-ball_vy

}

}

}

}

void Input()//与用户输入有关的更新

{

{

MOUSEMSG m//定义鼠标信息

if(MouseHit())//检测当前是否有鼠标信息

{

m=GetMouseMsg()//获取一条鼠标信息

if(m.uMsg==WM_MOUSEMOVE)

{

//挡板的值得鼠标的位置

bar_x=m.x

bar_y=m.y

bar_left=bar_x-bar_width/2

bar_right=bar_x+bar_width/2

bar_top=bar_y-bar_high/2

bar_bottom=bar_y+bar_high/2

}

else if(m.uMsg==WM_LBUTTONDOWN)//按下鼠标左键,初始化小球的位置为挡板上面中心

{

ball_x=bar_x

ball_y=bar_top-radius-3

}

}

}

}

void gameover()//游戏结束

{

EndBatchDraw()

closegraph()

}

main()

{

startup()

while(1)

{

clear()

output()

Input()

show()

}

gameover()

return 0

}

Python程序开发之简单小程序实例

(11)小 游戏 -跳动的小球

一、项目功能

用户控制挡板来阻挡跳动的小球。

二、项目分析

根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。

三、程序源代码

源码部分截图:

源码:

#!/usr/bin/python3.6

# -*- coding: GBK -*-

#导入相应模块

from tkinter import *

import random

import time

#自定义小球的类 Ball

class Ball:

# 初始化

def __init__(self,canvas,paddle,color):

#传递画布值

self.canvas=canvas

#传递挡板值

self.paddle=paddle

#画圆并且保存其ID

self.id=canvas.create_oval(10,10,25,25,fill=color)

self.canvas.move(self.id,245,100)

#小球的水平位置起始列表

start=[-3,-2,-1,1,2,3]

#随机化位置列表

random.shuffle(start)

self.x=start[0]

self.y=-2

self.canvas_heigh=self.canvas.winfo_height()#获取窗口高度并保存

self.canvas_width=self.canvas.winfo_width()

#根据参数值绘制小球

def draw(self):

self.canvas.move(self.id,self.x,self.y)

pos=self.canvas.coords(self.id)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)

#使得小球不会超出窗口

pad=self.canvas.coords(self.paddle.id)#获取小球挡板的坐标

if pos[1]=self.canvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]

在一些跨系统的性能测试项目中,往往由于客观因素的限制(测试硬件资源有限、多系统之间的协调等),我们无法搭建一个完整的测试环境来完成测试工作。此时,我们一般会搭建出被测系统,然后采用软件程序来模拟其他相关系统的功能。该软件程序一般被称为挡板。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11657395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存