- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图用 C 编译我的程序(使用 cygwin),但在尝试调用 hide_game() 和 show_game() 函数时,我不断收到“冲突类型”和“隐式声明”。如果有人可以帮助我解决这个问题,我将不胜感激!
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <cab202_graphics.h>
#include <cab202_sprites.h>
#include <cab202_timers.h>
#include <curses.h>
bool helpPressed = false;
int was_visible[];
int score = 0;
int lives = 5;
sprite_id ship;
sprite_id ship;
#define S_WIDTH 13
#define S_HEIGHT 6
char * ship_image =
/**/ " ^ "
/**/ " / \\ "
/**/ " ^/ \\^ "
/**/ "( . Y . )"
/**/ "(BLACK LIVES)"
/**/ " ( MATTER ) ";
char * start_msg =
/**/ "----------------------------------------"
/**/ "- ******************** -"
/**/ "- The Diamonds of Doom -"
/**/ "- **************** -"
/**/ "- ******** -"
/**/ "----------------------------------------"
/**/ "- Controls -"
/**/ "- Quit : Q -"
/**/ "- Help : H -"
/**/ "- Move Left/Right : Arrow Keys -"
/**/ "- Shoot Bullet : Z X C -"
/**/ "----------------------------------------"
/**/ "- Press a key to play... -"
/**/ "----------------------------------------";
#define MAX_BD 10
sprite_id Bdiamond[MAX_BD];
#define BD_WIDTH 5
#define BD_HEIGHT 5
char * Bdiamond_image =
/**/ " 0 "
/**/ " 000 "
/**/ "00000"
/**/ " 000 "
/**/ " 0 ";
#define MAX_MD 20
sprite_id Mdiamond[MAX_MD];
#define MD_WIDTH 3
#define MD_HEIGHT 3
char * Mdiamond_image =
/**/ " 0 "
/**/ "000"
/**/ " 0 ";
#define MAX_LD 40
sprite_id diamond[MAX_LD];
#define LD_WIDTH 1
#define LD_HEIGHT 1
char * Ldiamond_image =
/**/ "0";
int bullet_index = 0;
#define MAX_BULLET 100
sprite_id bullet[MAX_BULLET];
#define BULLET_WIDTH 1
#define BULLET_HEIGHT 1
char * bullet_image =
/**/ "o";
char * msg_gameover =
/**/ "###########################"
/**/ "# #"
/**/ "# Game Over #"
/**/ "# Play again (y/n)? #"
/**/ "# #"
/**/ "###########################";
double ship_x, ship_y, l_bullet;
bool game_over = false;
void setup_ship(){
ship = sprite_create(
(screen_width() - S_WIDTH) / 2,
(screen_height() - S_HEIGHT) -3/2,
S_WIDTH,
S_HEIGHT,
ship_image);
sprite_draw (ship);
}
void setup_diamond() {
for (int i = 0; i < MAX_BD; i++){
Bdiamond[i] = sprite_create(
rand() % (screen_width()-BD_WIDTH),
3,
BD_WIDTH,
BD_HEIGHT,
Bdiamond_image );
sprite_turn_to (Bdiamond[i], 0.15, 0);
sprite_turn (Bdiamond[i], rand() % 360 );
sprite_draw (Bdiamond[i] );
}
}
void setup_bullet() {
for( int i = 0; i <=MAX_BULLET; i++){
bullet[i] = sprite_create(-1, -1, 1 , 1, bullet_image);
}
}
void wall_check(sprite_id bullet){
if( sprite_y(bullet) <= 3 && sprite_y(bullet) != -1){
sprite_move_to(bullet, -1, -1);
sprite_turn_to(bullet, 0, 0);
}
}
bool collision (sprite_id ship, sprite_id Bdiamond2) {
int lh = round(sprite_x(ship)), rh = lh + sprite_width(ship) -1;
int lz = round(sprite_x(Bdiamond2)), rz = lz + sprite_width(Bdiamond2) -1;
int th = round(sprite_y(ship)), bh = th + sprite_width(ship) -1;
int tz = round(sprite_y(Bdiamond2)), bz = tz + sprite_width(Bdiamond2) -1;
bool collided = true;
if ( bz < th ) collided = false;
else if ( bh < tz ) collided = false;
else if ( rz < lh ) collided = false;
else if ( rh < lz ) collided = false;
return collided;
}
void process_button() {
int key = get_char();
int xh = round(sprite_x(ship));
int yh = round(sprite_y(ship));
if ( ( 'a' == key || KEY_LEFT == key ) && xh > 1 ) {
sprite_move(ship, -1, 0);
}
else if ( ( 'd' == key || KEY_RIGHT == key ) && xh < screen_width() - sprite_width(ship) - 1 ) {
sprite_move(ship, +1, 0);
}
if ('x' == key){
sprite_move(bullet[bullet_index], xh + 7, yh);
sprite_turn_to(bullet[bullet_index], 0, -0.1);
bullet_index++;
}
if ('z' == key){
sprite_move(bullet[bullet_index], xh + 3, yh + 2);
sprite_turn_to(bullet[bullet_index], 0, -0.1);
bullet_index++;
}
if ('c' == key){
sprite_move(bullet[bullet_index], xh + 11, yh + 2);
sprite_turn_to(bullet[bullet_index], 0, -0.1);
bullet_index++;
}
if ('h' == key){
helpPressed = true;
hide_game();
sprite_draw(help_msg);
show_screen();
wait_char();
show_game();
}
}
void hide_game(){
for( int i= 0; i < MAX_BD; i++ ) {
if ( Bdiamond[i]->is_visible ) {
was_visible[i] = 1;
sprite_hide(Bdiamond[i]);
}
else {
was_visible[i] = 0;
}
}
sprite_hide(ship);
}
void show_game(){
for( int i= 0; i < MAX_BD; i++ ) {
if ( was_visible[i] == 1 ) {
sprite_show(Bdiamond[i]);
}
sprite_show(ship);
}
void process_diamond() {
for( int i= 0; i < MAX_BD; i++ ) {
if ( Bdiamond[i]->is_visible ) {
sprite_step( Bdiamond[i] );
if (collision (ship, Bdiamond[i] )) {
sprite_hide( Bdiamond[i] );
lives--;
}
}
int x_limit = screen_width(), y_limit = screen_height();
int x = round(sprite_x(Bdiamond[i]));
int y = round(sprite_y(Bdiamond[i]));
double dx = sprite_dx(Bdiamond[i]);
double dy = sprite_dy(Bdiamond[i]);
if ( (x <= 0) || (x >= screen_width() - sprite_width(Bdiamond[i])) ) dx = -dx;
if ( (y <= 2) || (y >= screen_height() - sprite_height(Bdiamond[i])) ) dy = -dy;
if ( dx != sprite_dx(Bdiamond[i]) || dy != sprite_dy(Bdiamond[i]) ) {
sprite_back(Bdiamond[i]);
sprite_turn_to(Bdiamond[i], dx, dy);
}
}
}
void process_bullet() {
for( int i = 0; i <= MAX_BULLET; i++){
sprite_step(bullet[i]);
wall_check(bullet[i]);
for(int j= 0; j< MAX_BD; j++)
{
if( sprite_visible(Bdiamond[j]) && collision(bullet[i], Bdiamond[j])) {
sprite_hide(Bdiamond[j]);
sprite_move_to(bullet[i], -1, -1);
sprite_turn_to(bullet[i], 0, 0);
score=score+1;
}
}
}
}
void draw_border(void) {
int left = 0, right = screen_width() - 1, top = 0, bottom = screen_height() - 1;
draw_line(left, top, right, top, '#');
draw_line(left, top + 2, right, top + 2, '#');
draw_line(left, bottom, right, bottom, '#');
draw_line(left, top, left, bottom, '#');
draw_line(right, top, right, bottom, '#');
int timer = 420;
draw_formatted(left + screen_width()/3, top + 1, "# Score: %d", score);
draw_formatted(left + 3, top + 1, "Lives: %d", lives);
draw_formatted(left + screen_width()*2/3, top + 1, "# Time: %d", timer);
//draw_double(10, 10, sprite_x(ship));
//draw_double(10, 11, sprite_y(ship));
//draw_int(10, 12, sprite_visible(ship));
}
void draw_game() {
clear_screen();
draw_border();
sprite_draw ( ship );
for (int i = 0; i < MAX_BD; i++ ) {
sprite_draw(Bdiamond[i] );
}
for( int i = 0; i <= MAX_BULLET; i++){
sprite_step(bullet[i]);
sprite_draw(bullet[i]);
}
}
void help() {
clear_screen();
int msg_height = 14;
int msg_width = 40;
sprite_id helpMsg = sprite_create(
(screen_width() - msg_width) / 2,
(screen_height() - msg_height) / 2,
msg_width, msg_height, start_msg);
sprite_draw(helpMsg);
show_screen();
wait_char();
}
int main () {
setup_screen();
help();
setup_ship();
setup_diamond();
setup_bullet();
show_screen();
while ( ! game_over && helpPressed == false;) {
process_button();
process_bullet();
process_diamond();
draw_game();
if ( bullet_index >= 100) {
bullet_index = 0;
}
show_screen();
timer_pause(10);
}
cleanup_screen;
}
最佳答案
这两个函数需要前向声明,编译器不知道hide_game()
or show_game()
什么时候调用这些函数被调用。
在process_button()
前添加void hide_game();
和show_game();
即可解决问题,通常添加这两个声明在文件的顶部。
关于c - 函数错误,在 'conflicting type'编译时出现 'C',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43259509/
假设a是张量,那么有什么区别: 类型(a) a.类型 a.type() 我找不到区分这些的文档。 最佳答案 type 是 python 内置方法。 它将返回对象的类型。喜欢 torch.Tensor.
什么是 Type 1 的居民的例子?两者都不是 Type也不是Type的居民?在 Idris REPL 中进行探索时,我无法想出任何东西。 更准确地说,我正在寻找一些 x除了 Type产生以下结果:
我找到了一些资源,但我不确定我是否理解。 我找到的一些资源是: http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb2ff3358411d1829f00
这两个函数原型(prototype)有什么区别? void apply1(double(f)(double)); void apply2(double(*f)(double)); 如果目标是将提供的函
http://play.golang.org/p/icQO_bAZNE 我正在练习使用堆进行排序,但是 prog.go:85: type bucket is not an expression
假设有一个泛型定义的方法信息对象,即一个方法信息对象,这样的方法Info.IsGenericMethodDefinition==TRUE:。也可以说它们也有一个泛型参数列表:。我可以使用以下命令获取该
在具有依赖类型的语言中,您可以使用 Type-in-Type 来简化语言并赋予它很多功能。这使得语言在逻辑上不一致,但如果您只对编程感兴趣而不对定理证明感兴趣,这可能不是问题。 在 Cayenne
根据 Nim 手册,变量类型是“静态类型”,而变量在内存中指向的实际值是“动态类型”。 它们怎么可能是不同的类型?我认为将错误的类型分配给变量将是一个错误。 最佳答案 import typetrait
假设您有以下结构和协议(protocol): struct Ticket { var items: [TicketItem] = [] } struct TicketItem { } prot
我正在处理一个 EF 问题,我发现它很难调试...以前,在我的系统中有一个表类型继承设置管理不同的用户类型 - 所有用户共有的一种根类型,以及大致基于使用该帐户的人员类型的几种不同的子类型。现在,我遇
这是我的 DBManager.swift import RealmSwift class DBManager { class func getAllDogs() -> [Dog] {
我正在尝试使用傅里叶校正图像中的曝光。这是我面临的错误 5 padded = np.log(padded + 1) #so we never have log of 0 6 g
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
请考虑以下设置: protocol MyProcotol { } class MyModel: MyProcotol { } enum Result { case success(value:
好吧,我将我的 python 项目编译成一个可执行文件,它在我的电脑上运行,但我将它发送给几个 friend 进行测试,他们都遇到了这个错误。我以前从未见过这样的错误。我使用 Nuitka 来编译代码
当我尝试训练我的模型时"ValueError: Type must be a sub-type of ndarray type"出现在 line x_norm=(np.power(x,2)).sum(
我尝试在另一个类中打断、计数然后加入对象。所以我构建协议(protocol): typealias DataBreaker = () -> [Double] typealias DataJoiner
我正在使用 VS 2015 更新 3、Angular 2.1.2、Typescript 2.0.6 有人可以澄清什么是 typings 与 npm @types 以及本月很难找到的任何其他文档吗? 或
我正在考虑从 VS2010 更改为 Mono,因此我通过 MoMA 运行我的程序集,看看我在转换过程中可能遇到多少困难。在生成的报告中,我发现我不断收到此错误: bool Type.op_Equali
主要问题 不太确定这是否可能,但由于我讨厌 Typescript 并且它使我的编码变得困难,我想我会问只是为了确定。 interface ISomeInterface { handler: ()
我是一名优秀的程序员,十分优秀!